PHP in_array函数不能在循环中使用多维数组

时间:2012-10-29 15:59:55

标签: php arrays foreach

我有一个数组,其中包含“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",它也会返回找到的内容。它总是回归发现?不确定是什么问题。

2 个答案:

答案 0 :(得分:1)

您正在递归调用该函数。即使您使用needle作为bbrubrcuyrfbur调用该函数,在if条件下也会以needleformna1me递归调用该函数。

在第一次递归中,$arr=get_defined_vars();会将$needle的值读为formna1me。然后$needle将被重新分配formna1meif条件将与formna1me中的$needle$args中的{{1}}匹配。

第2行到第6行可能不应该在该功能中。

答案 1 :(得分:0)

is_array应该像下面这样工作,你正在检查is_array中的项而不是数组

$yes = array('this', 'is', 'an array');

echo is_array($yes) ? 'Array' : 'not an Array';

is_array正在做的是

is_array - 查找变量是否为数组

作为您的评论

告诉该值是否在数组try in_array中 - 检查数组中是否存在值

$arr = array("Mac", "NT", "msc", "Linux");
if (in_array("Linux", $arr)) {
   echo 'yes it is';
}