在多维数组中搜索值

时间:2015-09-29 13:14:52

标签: php arrays multidimensional-array

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

try:
        if isinstance(var1,str) == 0:
            raise TypeCheckingException(type(var1),str)
        if isinstance(var2,str) == 0:
            raise TypeCheckingException(type(var2),str)
        if isinstance(var3,int) == 0:
            raise TypeCheckingException(type(var3),int)
        if isinstance(var4,int) == 0:
            raise TypeCheckingException(type(var4),int)
        if isinstance(var5,str) == 0:
            raise TypeCheckingException(type(var5),str)
        if isinstance(var6,float) == 0:
            raise TypeCheckingException(type(var6),float)
    except TypeCheckingException, tce:
        print "Type expected input " + str(tce.type_in) + " while type expected is " + str(tce.type_exp) +  "."

我找到了here这个功能:

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"   } 
}

但是这个if语句:

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(!$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 } 函数退出代码之后......它不会为我返回任何值。

哇,当我将error_reporting设置为E_ALL时出现此错误:调用未定义的函数in_array_r()我必须弄清楚为什么会这样

EDIT2: 好的,我得到了这个,我必须在调用in_array_r函数之前添加in_array_r

2 个答案:

答案 0 :(得分:0)

您是否要求在多维数组中使用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";
 }

答案 1 :(得分:0)

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