Commit:    20ab30339d9731dd6e85ea5029280148f519cdc7
Author:    Ben Ramsey <ram...@php.net>         Sun, 15 Apr 2012 21:40:45 -0500
Parents:   66a02eb25e1533c2ace47f8d934b193ebe317cde
Branches:  PHP-5.5 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=20ab30339d9731dd6e85ea5029280148f519cdc7

Log:
array_column: Adding test for IS_OBJECT and converting object to string

Changed paths:
  M  ext/standard/array.c
  M  ext/standard/tests/array/array_column_basic.phpt


Diff:
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 40ee947..00850ba 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -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;
diff --git a/ext/standard/tests/array/array_column_basic.phpt 
b/ext/standard/tests/array/array_column_basic.phpt
index efa98ce..fa8fe2f 100644
--- a/ext/standard/tests/array/array_column_basic.phpt
+++ b/ext/standard/tests/array/array_column_basic.phpt
@@ -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


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to