PHP如何获取数组中是否存在某个值还有是否相同

$arr1=Array ( [0] => Array ( [id] => 2 [num] => 41 [display] => 1 ) [1] => Array ( [id] => 3 [num] => 41 [display] => 0 ) [2] => Array ( [id] => 4 [num] => 43 [display] => 1 ) [3] => Array ( [id] => 5 [num] => 43 [display] => 1 ) )

如何判断数组中 所有num的值是否相同 还有如何检测所有display里面是否有0的存在

您好,很高兴为你作答。

问题是有2个,按照规范化程序的设计原则,可以编写2个函数。由于这是一个二维数组,因为我们需要用到遍历和数组访问的知识。

针对第一个问题,判断所有的num值是否相同,也就是要一个结果:true or false。true代表是全部相同的,而false则反之。所以我们可以写出这样一个函数:

 /**
    *  检测数组的num值是否全部相等
    *@param $arr mixed 待检测的数组
    *@return bool true or false
    */
    function NumIsEqual($arr){
        $length = count($arr);
        $compare = 0;
        for ($i=0; $i < $length; $i++) { 
            if($compare == 0){
                $compare = $arr[$i]['Num'];
            }

            if($compare != $arr[$i]['num']){
                return false;
            }
        }
        return true;
    }

对于第二个问题,检测所有的display是否有0存在,同第一个问题一样,也是相同的处理方式,只不过判断逻辑稍有不同。大致如下:

 /**
    *  检测数组的display是否有0存在
    *@param $arr mixed 待检测的数组
    *@return bool true or false
    */
    function NumIsEqual($arr){
        $length = count($arr);      
        for ($i=0; $i < $length; $i++) { 

            if($arr[$i]['display'] == 0){
                return true;
            }
        }
        return false;
    }

追问

似乎不对,第一个问题我用你的代码实验了下,无论num是否相同结果都是true
第二个我还没有测试,再帮我看看吧 辛苦了

追答

(1)第一个函数的Num改为小写的;

(2)第二个函数的名字随便改一下,我为了徒方便没有改,要注意改为其他的。

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-02-20
foreach($arr1 as $r ){
if($r['display']==0)
{
echo "有0";
}
i=$r['num'];

}
foreach($arr1 as $r ){
if($r['num']!=i)
{
echo "所有num不相等";
}

}
相似回答