1

我有一个数组,其中包含“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"它也会返回找到。它只是总是返回发现?不知道出了什么问题。

4

2 回答 2

1

您正在递归调用该函数。即使您使用needleas调用该函数bbrubrcuyrfbur,在条件下该函数也使用asif递归调用。 needleformna1me

在第一次递归中,$arr=get_defined_vars();将读取$needleas的值formna1me。然后$needle将被重新分配formna1me,条件ifformna1me$needle.$args

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

于 2012-10-29T16:50:23.930 回答
0

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

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

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

is_array 正在做的是

is_array— 判断变量是否为数组

作为你的评论

to find that the value is in array try in_array— 检查一个值是否存在于数组中

$arr = array("Mac", "NT", "msc", "Linux");
if (in_array("Linux", $arr)) {
   echo 'yes it is';
}
于 2012-10-29T16:03:52.513 回答