mirror of
https://github.com/php/php-src.git
synced 2025-08-18 06:58:55 +02:00
add new test
This commit is contained in:
parent
8922c50ca4
commit
b34e8d2e3e
1 changed files with 251 additions and 0 deletions
251
ext/standard/tests/array/array_walk_closure.phpt
Normal file
251
ext/standard/tests/array/array_walk_closure.phpt
Normal file
|
@ -0,0 +1,251 @@
|
|||
--TEST--
|
||||
array_walk() closure tests
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
var_dump(array_walk());
|
||||
|
||||
$ar = false;
|
||||
var_dump(array_walk($ar, $ar));
|
||||
|
||||
$ar = NULL;
|
||||
var_dump(array_walk($ar, $ar));
|
||||
|
||||
$ar = ["one" => 1, "two"=>2, "three" => 3];
|
||||
var_dump(array_walk($ar, function(){ var_dump(func_get_args());}));
|
||||
|
||||
echo "\nclosure with array\n";
|
||||
$ar = ["one" => 1, "two"=>2, "three" => 3];
|
||||
$user_data = ["sum" => 42];
|
||||
$func = function($value, $key, &$udata) {
|
||||
var_dump($udata);
|
||||
$udata["sum"] += $value;
|
||||
};
|
||||
|
||||
var_dump(array_walk($ar, $func, $user_data));
|
||||
echo "End result:";
|
||||
var_dump($user_data["sum"]);
|
||||
|
||||
echo "\nclosure with use\n";
|
||||
$ar = ["one" => 1, "two"=>2, "three" => 3];
|
||||
$user_data = ["sum" => 42];
|
||||
$func = function($value, $key) use (&$user_data) {
|
||||
var_dump($user_data);
|
||||
$user_data["sum"] += $value;
|
||||
};
|
||||
|
||||
var_dump(array_walk($ar, $func, $user_data));
|
||||
echo "End result:";
|
||||
var_dump($user_data["sum"]);
|
||||
|
||||
|
||||
echo "\nclosure with object\n";
|
||||
$ar = ["one" => 1, "two"=>2, "three" => 3];
|
||||
$user_data = (object)["sum" => 42];
|
||||
$func = function($value, $key, &$udata) {
|
||||
var_dump($udata);
|
||||
$udata->sum += $value;
|
||||
};
|
||||
|
||||
var_dump(array_walk($ar, $func, $user_data));
|
||||
echo "End result:";
|
||||
var_dump($user_data->sum);
|
||||
|
||||
|
||||
|
||||
echo "\nfunction with object\n";
|
||||
function sum_it_up_object($value, $key, $udata)
|
||||
{
|
||||
var_dump($udata);
|
||||
$udata->sum += $value;
|
||||
}
|
||||
|
||||
$ar = ["one" => 1, "two"=>2, "three" => 3];
|
||||
$user_data = (object)["sum" => 42];
|
||||
|
||||
var_dump(array_walk($ar, "sum_it_up_object", $user_data));
|
||||
echo "End result:";
|
||||
var_dump($user_data->sum);
|
||||
|
||||
|
||||
echo "\nfunction with array\n";
|
||||
function sum_it_up_array($value, $key, $udata)
|
||||
{
|
||||
var_dump($udata);
|
||||
$udata['sum'] += $value;
|
||||
}
|
||||
|
||||
$ar = ["one" => 1, "two"=>2, "three" => 3];
|
||||
$user_data = ["sum" => 42];
|
||||
|
||||
var_dump(array_walk($ar, "sum_it_up_array", $user_data));
|
||||
echo "End result:";
|
||||
var_dump($user_data['sum']);
|
||||
|
||||
echo "\nclosure and exception\n";
|
||||
$ar = ["one" => 1, "two"=>2, "three" => 3];
|
||||
try {
|
||||
var_dump(array_walk($ar, function($v, $k) { if ($v == 2) throw new Exception; } ));
|
||||
} catch (Exception $e) {
|
||||
var_dump($e->getTrace());
|
||||
}
|
||||
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: array_walk() expects at least 2 parameters, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
Warning: array_walk() expects parameter 1 to be array, boolean given in %s on line %d
|
||||
NULL
|
||||
|
||||
Warning: array_walk() expects parameter 1 to be array, null given in %s on line %d
|
||||
NULL
|
||||
array(2) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
string(3) "one"
|
||||
}
|
||||
array(2) {
|
||||
[0]=>
|
||||
int(2)
|
||||
[1]=>
|
||||
string(3) "two"
|
||||
}
|
||||
array(2) {
|
||||
[0]=>
|
||||
int(3)
|
||||
[1]=>
|
||||
string(5) "three"
|
||||
}
|
||||
bool(true)
|
||||
|
||||
closure with array
|
||||
array(1) {
|
||||
["sum"]=>
|
||||
int(42)
|
||||
}
|
||||
array(1) {
|
||||
["sum"]=>
|
||||
int(43)
|
||||
}
|
||||
array(1) {
|
||||
["sum"]=>
|
||||
int(45)
|
||||
}
|
||||
bool(true)
|
||||
End result:int(42)
|
||||
|
||||
closure with use
|
||||
array(1) {
|
||||
["sum"]=>
|
||||
int(42)
|
||||
}
|
||||
array(1) {
|
||||
["sum"]=>
|
||||
int(43)
|
||||
}
|
||||
array(1) {
|
||||
["sum"]=>
|
||||
int(45)
|
||||
}
|
||||
bool(true)
|
||||
End result:int(48)
|
||||
|
||||
closure with object
|
||||
object(stdClass)#1 (1) {
|
||||
["sum"]=>
|
||||
int(42)
|
||||
}
|
||||
object(stdClass)#1 (1) {
|
||||
["sum"]=>
|
||||
int(43)
|
||||
}
|
||||
object(stdClass)#1 (1) {
|
||||
["sum"]=>
|
||||
int(45)
|
||||
}
|
||||
bool(true)
|
||||
End result:int(48)
|
||||
|
||||
function with object
|
||||
object(stdClass)#2 (1) {
|
||||
["sum"]=>
|
||||
int(42)
|
||||
}
|
||||
object(stdClass)#2 (1) {
|
||||
["sum"]=>
|
||||
int(43)
|
||||
}
|
||||
object(stdClass)#2 (1) {
|
||||
["sum"]=>
|
||||
int(45)
|
||||
}
|
||||
bool(true)
|
||||
End result:int(48)
|
||||
|
||||
function with array
|
||||
array(1) {
|
||||
["sum"]=>
|
||||
int(42)
|
||||
}
|
||||
array(1) {
|
||||
["sum"]=>
|
||||
int(42)
|
||||
}
|
||||
array(1) {
|
||||
["sum"]=>
|
||||
int(42)
|
||||
}
|
||||
bool(true)
|
||||
End result:int(42)
|
||||
|
||||
closure and exception
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(2) {
|
||||
["function"]=>
|
||||
string(9) "{closure}"
|
||||
["args"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
int(2)
|
||||
[1]=>
|
||||
string(3) "two"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
array(4) {
|
||||
["file"]=>
|
||||
string(69) "%s"
|
||||
["line"]=>
|
||||
int(%d)
|
||||
["function"]=>
|
||||
string(10) "array_walk"
|
||||
["args"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
&array(3) {
|
||||
["one"]=>
|
||||
int(1)
|
||||
["two"]=>
|
||||
int(2)
|
||||
["three"]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
object(Closure)#2 (1) {
|
||||
["parameter"]=>
|
||||
array(2) {
|
||||
["$v"]=>
|
||||
string(10) "<required>"
|
||||
["$k"]=>
|
||||
string(10) "<required>"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Done
|
Loading…
Add table
Add a link
Reference in a new issue