我在PHP中有一个简单的in_array
语句。它正在寻找这个针:
926296884640412424_1534875699
在这个大海捞针:
Array (
[0] => Array
(
[id] => 926296884640412424_1534875699
)
[1] => Array
(
[id] => 926301883885225094_723729160
)
)
我的代码是这样的:
if(!in_array($object->id, $Admin->hiddenItems, true)) {
// Always fires
} else {
// Never fires
}
它永远找不到它。我已尝试将strict
设置为TRUE和FALSE,但都不起作用。
我做错了什么?
答案 0 :(得分:1)
您正在搜索多维数组。在使用in_array()之前将其展平:
if (!in_array($object->id, array_column($Admin->hiddenItems, 'id'), true)) {
...
}
答案 1 :(得分:1)
<?php
$arrays = array(
array(
'id' => '926296884640412424_1534875699'
),
array(
'id' => '926301883885225094_723729160'
)
);
print exist('926296884640412424_1534875699', $arrays);
function exist($id, $arrays) {
foreach ($arrays as $array) {
if (in_array($id, $array)) {
return "exist";
}
}
return "no exist";
}
答案 2 :(得分:1)
您也可以使用此递归函数在多维数组中搜索某些值:
function multi_in_array_r($needle, $haystack) {
if(in_array($needle, $haystack)) {
return true;
}
foreach($haystack as $element) {
if(is_array($element) && multi_in_array_r($needle, $element))
return true;
}
return false;
}
由您来决定什么能带来最佳效果,因为您可以看到实现相同目标的方法很少。