我有一个数组,其中包含“formname”作为$ key。当我执行以下功能时:
function in_array_r($needle, $arr, $strict = true) {
$form_id = $lead['form_id'];
$user_id = $lead['id'];
$attachments = array();
$arr=get_defined_vars();
$needle="formna1me";
foreach ($arr as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
echo "found"; exit;
}
}
echo "notfound"; exit;
}
它应该返回“找到”。但是如果我将$needle
更改为$needle = "bbrubrcuyrfbur"
,它也会返回找到的内容。它总是回归发现?不确定是什么问题。
答案 0 :(得分:1)
您正在递归调用该函数。即使您使用needle
作为bbrubrcuyrfbur
调用该函数,在if
条件下也会以needle
为formna1me
递归调用该函数。
在第一次递归中,$arr=get_defined_vars();
会将$needle
的值读为formna1me
。然后$needle
将被重新分配formna1me
,if
条件将与formna1me
中的$needle
与$args
中的{{1}}匹配。
第2行到第6行可能不应该在该功能中。
答案 1 :(得分:0)