php判断多维数组中是否含有某个值


Create:2021-04-09


在php开发中,我们有时候需要检查PHP多维数组中是否存在某一值Value。在本教程中,我们将演示并描述了如何检查多维数组中是否存在某一值的几种方法。我们将使用以下2种方法来做到这一点。

  1. PHP in_array()和array_column()函数
  2. 自定义函数

 

PHP in_array()和array_column()函数

php in_array()检查数组中是否存在某个值,只是这个方法不能检查多维数组。但是我们可以使用in_array()和array_column()函数检查多维数组中是否存在Value。

例子:

<?php
$userdb = Array
(
'0' => Array
    (
        'uid' => '100',
        'name' => 'Sandra Shush',
        'url' => 'urlof100'
    ),

'1' => Array
    (
        'uid' => '5465',
        'name' => 'Stefanie Mcmohn',
        'pic_square' => 'urlof100'
    ),

'2' => Array
    (
        'uid' => '40489',
        'name' => 'Michael',
        'pic_square' => 'urlof40489'
    )
);


if(in_array(100, array_column($userdb, 'uid'))) { // search value in the array
    echo "FOUND";
}
?>

array_column() 返回输入数组中某个单一列的值.

array_column($userdb, 'uid')

它将返回如下数组:

Array
(
  [0] => 100
  [1] => 5465
  [2] => 40489
)

然后我们使用in_array()函数检查一维数组中是否存在值"100"。

 

自定义函数

我们可以使用类似下面的递归方法来检查多维数组中是否存在某一值。

function deep_in_array($value, $array) {   
        foreach($array as $item) {   
            if(!is_array($item)) {   
                if ($item == $value) {  
                    return true;  
                } else {  
                    continue;
                }  
            }   
                
            if(in_array($value, $item)) {  
                return true;      
            } else if(deep_in_array($value, $item)) {  
                return true;      
            }  
        }   
        return false;   
    }