在多维数组中搜索值



我想在多维数组中找到值。我有一个这样的数组:

array(4) { 
    [0]=> array(2) { 
        [0]=> string(3) "840" 
        [1]=> string(3) "841" } 
    [1]=> array(1) { 
        [0]=> string(3) "842" } 
    [2]=> array(4) { 
        [0]=> string(3) "333" 
        [1]=> string(3) "723" 
        [2]=> string(3) "749" 
        [3]=> string(3) "750" } 
    [3]=> array(4) { 
        [0]=> string(3) "248" 
        [1]=> string(3) "268" 
        [2]=> string(3) "269" 
        [3]=> string(3) "270"   } 
}

我在这里找到了这个函数:

function in_array_r($needle, $haystack, $strict = false) {
    foreach ($haystack as $item) {
        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
            return true;
        }
    }
    return false;
}

但是这个if语句:

if(!$this->in_array_r($id, $myArray) {} 

不搜索…我真的不知道为什么。我做错了什么?我已经分析了我的代码多次,它似乎是好的。

编辑:

我有这个:

foreach($koszyk as $Id_produkty => $Ilosc) {
   if(!$this->in_array_r($Id_produkty, $myArray)) {
       // If the Id_produkty variable is not in $myArray I want to skip to the next element in $koszyk
       continue;
   }
   // Here is mySql query and I'm retrieving data depends on $Id_produkty
}

但是看起来in_array_r函数在它之后退出了代码…它没有返回任何值

哇,当我设置error_reporting为E_ALL时,我得到了这个错误:调用未定义函数in_array_r()我必须弄清楚为什么是

EDIT2:好的,我明白了,我必须在调用in_array_r函数之前添加$this->

您是否要求在多维数组中使用in_array()函数?如果是这样,那么这段代码可能就是你要问的,尽管你的问题不清楚。

function in_multiarray($elem, $array)
{
    $top = sizeof($array) - 1;
    $bottom = 0;
    while($bottom <= $top)
    {
        if($array[$bottom] == $elem)
            return true;
        else 
            if(is_array($array[$bottom]))
                if(in_multiarray($elem, ($array[$bottom])))
                    return true;
        $bottom++;
    }        
    return false;
}
 if(in_multiarray(840,$arrayValue)){
    echo "value is present in the array";
 }

好的,我得到了这个,我必须在调用in_array_r函数之前添加$this->。我已经弄清楚了,因为我设置error_reporting为E_ALL错误是:调用未定义函数in_array_r()

相关内容

  • 没有找到相关文章

最新更新