为什么;return";关于PHP函数是否停止进程?
我不明白为什么“return”不停止这个函数中的进程,我创建这个函数是为了在PHP的多级数组中搜索一个值。 代码如下:为什么;return";关于PHP函数是否停止进程?,php,return,Php,Return,我不明白为什么“return”不停止这个函数中的进程,我创建这个函数是为了在PHP的多级数组中搜索一个值。 代码如下: static function in_array_multi($needle, $haystack) { foreach ($haystack as $item) { if(is_array($item)){ in_array_multi($need
static function in_array_multi($needle, $haystack) {
foreach ($haystack as $item) {
if(is_array($item)){
in_array_multi($needle, $item);
}
else{
if ($item === $needle) {
return "ok";
}
}
}
return "nok";
}
我使用此数组作为示例:
$arr = array(0 => array(id=>1,name=>"cat 1"),
1 => array(id=>2,name=>"cat 2"),
2 => array(id=>3,name=>array(id=>7,name=>"cat 7"))
);
我这样调用函数:
echo in_array_multi("cat 1",$arr);
它正在返回“nok”。
我正在使用xdebug来遵循这个过程。它应该在第二轮停止这一进程。
有人知道发生了什么事吗?
谢谢因为你的函数返回将停止循环,你应该收集它并在最后返回 也许你想要这个
function array_multiple_search($array, $key, $value=null) {
$return = array();
if (is_array($array)) {
if (isset($array[$key])) {
if (is_null($value)) {
$return[] = $array;
} elseif ($array[$key] == $value) {
$return[] = $array;
}
}
foreach ($array as $subarray) {
$return = array_merge($return, array_multiple_search($subarray, $key, $value));
}
}
return $return;
}
param 1是目标数组
param 2是要搜索目标数组的键
param 3是要使用目标数组的键搜索的值(可以为null)
此函数将收集并返回一个合格的数组。我的评论有点粗心。如果递归实际找到了值,则只希望直接从递归返回。你可以
function in_array_multi($needle, $haystack) {
foreach ($haystack as $item) {
if(is_array($item)){
if ('ok' === in_array_multi($needle, $item)) {
return 'ok';
}
}
elseif ($item === $needle) {
return "ok";
}
}
return "nok";
}
当您在\u array\u multi中的
上重复出现时,您不会返回。更改数组中的\u multi($needle,$item)代码>到返回到数组中的多($needle,$item)代码>你好kojiro,你的建议使代码工作,但我认为我的代码中有一个错误。现在,函数不会通过所有数组。例如,如果我查找第7类。它返回nok。你能看到错误在哪里吗?哈,是的,对不起,我有点粗心。我在下面创造了一个更好的答案。