php in_array()适用于多维数组吗

答案是否定的,

in_array()不适用于多维数组。您可以编写一个递归函数来为您执行此操作:

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;

}

用法

$b = array(array("Mac","NT"),array("Irix","Linux"));

echo in_array_r("Irix",$b) ? 'found' : 'not found';

或者用下面方法也行:

function in_array_r($item,$array){

return preg_match('/"'.preg_quote($item,'/').'"/i',json_encode($array));

}

用法

if(in_array_r($item,$array)){

// found!

}

还有一种方法,就是使用array_search()和array_column(),如下:

如果您知道要搜索哪个列,则可以使用array_search()和array_column():

$userdb = Array

(

(0) => Array

(

('uid') => '100',

('name') => 'Sandra Shush',

('url') => 'urlof100'

),

(1) => Array

(

('uid') => '5465',

('name') => 'Stefanie Mcmohn',

('url') => 'urlof5465'

),

(2) => Array

(

('uid') => '40489',

('name') => 'Michael',

('url') => 'urlof40489'

)

);

if(array_search('urlof5465',array_column($userdb,'url')) !== false) {

echo 'value is in multidim array';

}

else {

echo 'value is not in multidim array';

}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...