summaryrefslogtreecommitdiff
path: root/ext/standard/tests/array/array_column_basic.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/tests/array/array_column_basic.phpt')
-rw-r--r--ext/standard/tests/array/array_column_basic.phpt123
1 files changed, 120 insertions, 3 deletions
diff --git a/ext/standard/tests/array/array_column_basic.phpt b/ext/standard/tests/array/array_column_basic.phpt
index fa8fe2fb5a..70ce2136b4 100644
--- a/ext/standard/tests/array/array_column_basic.phpt
+++ b/ext/standard/tests/array/array_column_basic.phpt
@@ -3,7 +3,7 @@ Test array_column() function: basic functionality
--FILE--
<?php
/* Prototype:
- * array array_column(array $input, mixed $key);
+ * array array_column(array $input, mixed $column_key[, mixed $index_key]);
* Description:
* Returns an array containing all the values from
* the specified "column" in a two-dimensional array.
@@ -35,6 +35,12 @@ var_dump(array_column($records, 'first_name'));
echo "-- id column from recordset --\n";
var_dump(array_column($records, 'id'));
+echo "-- last_name column from recordset, keyed by value from id column --\n";
+var_dump(array_column($records, 'last_name', 'id'));
+
+echo "-- last_name column from recordset, keyed by value from first_name column --\n";
+var_dump(array_column($records, 'last_name', 'first_name'));
+
echo "\n*** Testing multiple data types ***\n";
$file = basename(__FILE__);
$fh = fopen($file, 'r', true);
@@ -73,6 +79,7 @@ $values = array(
)
);
var_dump(array_column($values, 'value'));
+var_dump(array_column($values, 'value', 'id'));
echo "\n*** Testing numeric column keys ***\n";
$numericCols = array(
@@ -81,10 +88,12 @@ $numericCols = array(
array('ccc', '333')
);
var_dump(array_column($numericCols, 1));
+var_dump(array_column($numericCols, 1, 0));
echo "\n*** Testing failure to find specified column ***\n";
var_dump(array_column($numericCols, 2));
var_dump(array_column($numericCols, 'foo'));
+var_dump(array_column($numericCols, 0, 'foo'));
echo "\n*** Testing single dimensional array ***\n";
$singleDimension = array('foo', 'bar', 'baz');
@@ -92,10 +101,16 @@ var_dump(array_column($singleDimension, 1));
echo "\n*** Testing columns not present in all rows ***\n";
$mismatchedColumns = array(
- array('a' => 'foo', 'b' => 'bar'),
- array('a' => 'baz', 'c' => 'qux'),
+ array('a' => 'foo', 'b' => 'bar', 'e' => 'bbb'),
+ array('a' => 'baz', 'c' => 'qux', 'd' => 'aaa'),
+ array('a' => 'eee', 'b' => 'fff', 'e' => 'ggg'),
);
var_dump(array_column($mismatchedColumns, 'c'));
+var_dump(array_column($mismatchedColumns, 'c', 'a'));
+var_dump(array_column($mismatchedColumns, 'a', 'd'));
+var_dump(array_column($mismatchedColumns, 'a', 'e'));
+var_dump(array_column($mismatchedColumns, 'b'));
+var_dump(array_column($mismatchedColumns, 'b', 'a'));
echo "\n*** Testing use of object converted to string ***\n";
class Foo
@@ -105,8 +120,17 @@ class Foo
return 'last_name';
}
}
+class Bar
+{
+ public function __toString()
+ {
+ return 'first_name';
+ }
+}
$f = new Foo();
+$b = new Bar();
var_dump(array_column($records, $f));
+var_dump(array_column($records, $f, $b));
echo "Done\n";
?>
@@ -130,6 +154,24 @@ array(3) {
[2]=>
int(3)
}
+-- last_name column from recordset, keyed by value from id column --
+array(3) {
+ [1]=>
+ string(3) "Doe"
+ [2]=>
+ string(5) "Smith"
+ [3]=>
+ string(5) "Jones"
+}
+-- last_name column from recordset, keyed by value from first_name column --
+array(3) {
+ ["John"]=>
+ string(3) "Doe"
+ ["Sally"]=>
+ string(5) "Smith"
+ ["Jane"]=>
+ string(5) "Jones"
+}
*** Testing multiple data types ***
array(8) {
@@ -151,6 +193,25 @@ array(8) {
[7]=>
resource(5) of type (stream)
}
+array(8) {
+ [1]=>
+ object(stdClass)#1 (0) {
+ }
+ [2]=>
+ float(34.2345)
+ [3]=>
+ bool(true)
+ [4]=>
+ bool(false)
+ [5]=>
+ NULL
+ [6]=>
+ int(1234)
+ [7]=>
+ string(3) "Foo"
+ [8]=>
+ resource(5) of type (stream)
+}
*** Testing numeric column keys ***
array(3) {
@@ -161,12 +222,28 @@ array(3) {
[2]=>
string(3) "333"
}
+array(3) {
+ ["aaa"]=>
+ string(3) "111"
+ ["bbb"]=>
+ string(3) "222"
+ ["ccc"]=>
+ string(3) "333"
+}
*** Testing failure to find specified column ***
array(0) {
}
array(0) {
}
+array(3) {
+ [0]=>
+ string(3) "aaa"
+ [1]=>
+ string(3) "bbb"
+ [2]=>
+ string(3) "ccc"
+}
*** Testing single dimensional array ***
array(0) {
@@ -177,6 +254,38 @@ array(1) {
[0]=>
string(3) "qux"
}
+array(1) {
+ ["baz"]=>
+ string(3) "qux"
+}
+array(3) {
+ [0]=>
+ string(3) "foo"
+ ["aaa"]=>
+ string(3) "baz"
+ [1]=>
+ string(3) "eee"
+}
+array(3) {
+ ["bbb"]=>
+ string(3) "foo"
+ [0]=>
+ string(3) "baz"
+ ["ggg"]=>
+ string(3) "eee"
+}
+array(2) {
+ [0]=>
+ string(3) "bar"
+ [1]=>
+ string(3) "fff"
+}
+array(2) {
+ ["foo"]=>
+ string(3) "bar"
+ ["eee"]=>
+ string(3) "fff"
+}
*** Testing use of object converted to string ***
array(3) {
@@ -187,4 +296,12 @@ array(3) {
[2]=>
string(5) "Jones"
}
+array(3) {
+ ["John"]=>
+ string(3) "Doe"
+ ["Sally"]=>
+ string(5) "Smith"
+ ["Jane"]=>
+ string(5) "Jones"
+}
Done