]> granicus.if.org Git - php/commitdiff
array_column: Adding test for IS_OBJECT and converting object to string
authorBen Ramsey <ramsey@php.net>
Mon, 16 Apr 2012 02:40:45 +0000 (21:40 -0500)
committerBen Ramsey <ramsey@php.net>
Fri, 11 Jan 2013 20:16:19 +0000 (14:16 -0600)
ext/standard/array.c
ext/standard/tests/array/array_column_basic.phpt

index 40ee947fa58361a7a549b6d63e6060c5769dfe23..00850ba49ab87d3f87be01815a8288b87e759da3 100644 (file)
@@ -2589,6 +2589,11 @@ PHP_FUNCTION(array_column)
                        key = Z_STRVAL_P(zoffset);
                        key_len = Z_STRLEN_P(zoffset);
                        break;
+               case IS_OBJECT:
+                       convert_to_string_ex(&zoffset);
+                       key = Z_STRVAL_P(zoffset);
+                       key_len = Z_STRLEN_P(zoffset);
+                       break;
                default:
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "The key should be either a string or an integer");
                        RETURN_FALSE;
index efa98cef96e71be9f40fa0397aa2a64ce3287034..fa8fe2fb5a49e0c0d58bc6d127efd44e4f1251ba 100644 (file)
@@ -97,6 +97,17 @@ $mismatchedColumns = array(
 );
 var_dump(array_column($mismatchedColumns, 'c'));
 
+echo "\n*** Testing use of object converted to string ***\n";
+class Foo
+{
+    public function __toString()
+    {
+        return 'last_name';
+    }
+}
+$f = new Foo();
+var_dump(array_column($records, $f));
+
 echo "Done\n";
 ?>
 --EXPECTF--
@@ -166,4 +177,14 @@ array(1) {
   [0]=>
   string(3) "qux"
 }
+
+*** Testing use of object converted to string ***
+array(3) {
+  [0]=>
+  string(3) "Doe"
+  [1]=>
+  string(5) "Smith"
+  [2]=>
+  string(5) "Jones"
+}
 Done