当我在foreach循环中查询数据时,它可以工作,但在循环中的每一次传递中都会重复。我尝试在循环之外的任何其他地方使用var_dump,而数据却不在那里。为什么我的数据不存在于forEach循环之外?
<?php
$old_array = [10-2, 13=>"3452", 4=>"Green",
5=>"Green", 6=>"Blue", "green"=>"green",
"two"=>"green" ,"2"=>"green" , "rulebreak" =>"GrEeN",
"ninja"=>" Green ", ["blue" => "green", "green"=>"green", 2 => "itsGreen"] ];
$newArray = array();
function filter_Green($array) {
$find = "green";
$replace = "not green";
/* Same result as using str_replace on an array, but does so recursively for multi-dimensional arrays */
/* found here:
if (!is_array($array)) {
/* Used ireplace so that searches can be case insensitive */
return str_ireplace($find, $replace, $array);
}
foreach ($array as $key => $value) {
$newArray[$key] = $value;
if ($key == "green") {
$newArray[$key] = "not green";
}
if ($value == "green") {
$newArray[$value] = "not green";
}
}
return $newArray;
}
filter_Green($old_array);
var_dump($newArray);
?>
期望:当我运行这个函数时,它应该将"green“的所有实例替换为"not”,并将这些实例保存到$newArray
中。我让它返回$newArray,但即使这样,它似乎也与将值保存到newArray中的情况不匹配,因此我要做var_dump来检查它是否工作(似乎不起作用)。
结果:在设置过程中,如果我将var_dump($newArray)移动到foreach循环中,那么返回给var_dump的空数组似乎有点工作,但这会重复每次传递的数据。
发布于 2016-05-18 02:07:09
如果要将var_dump $newArray
放在函数的一边,则应在函数中声明$newArray
为global
。
<?php
$old_array = [10-2, 13=>"3452", 4=>"Green", 5=>"Green", 6=>"Blue", "green"=>"green", "two"=>"green" ,"2"=>"green" , "rulebreak" =>"GrEeN", "ninja"=>" Green ", ["blue" => "green", "green"=>"green", 2 => "itsGreen"] ];
$newArray = array();
function filter_Green($array) {
global $newArray;
$find = "green";
$replace = "not green";
/* Same result as using str_replace on an array, but does so recursively for multi-dimensional arrays */
if (!is_array($array)) {
/* Used ireplace so that searches can be case insensitive */
return str_ireplace($find, $replace, $array);
}
foreach ($array as $key => $value) {
$newArray[$key] = $value;
if ($key == "green") {
$newArray[$key] = "not green";
}
if ($value == "green") {
$newArray[$value] = "not green";
}
}
return $newArray;
}
filter_Green($old_array);
var_dump($newArray);
?>
但是,不要在函数中声明global
,而是使用filter_Green($old_array);
返回的值,如下所示
$result = filter_Green($old_array);
var_dump($result);
https://stackoverflow.com/questions/37296078
复制