Array
(
[0] => Array
(
[abc] => Array
(
[0] => Array
(
[a] => 35
[b] => c
[d] => 43
)
[1] => Array
(
[e] => 45
[f] => 50
[g] => 28
)
)
[hij] => Array
(
[0] => Array
(
[n] => 35
[o] => 37
[p] => 43
)
[1] => Array
(
[q] => 45
[r] => 50
[s] => 2800
)
)
)
[1] => Array
(
[efg] => Array
(
[0] => Array
(
[h] => 35
[i] => 37
[j] => 43
)
[1] => Array
(
[k] => 45
[l] => 50
[m] => 2800
)
)
[klm] => Array
(
[0] => Array
(
[t] => 35
[u] => 37
[v] => 43
)
[1] => Array
(
[w] => 45
[x] => 50
[y] => 10000
)
)
)
)
我正在尝试搜索特定的列,然后搜索多维数组中的值。例如列“ y”-值-10000。我在数组array_search中进行了尝试,但发现它只能通过第一个数组层查看
这有效
in_array(10000, array_column($arr[1]["klm"], 'y')
我想要实现的是能够从外部进行搜索
if(in_array(10000, array_column($arr, 'y'))) {
echo "FOUND";
}
如果可能,希望避免很多循环
根据需要添加数组
$arr = array();
$a1[0] = array("a"=>"35", "b"=>"c", "d"=>"43");
$a1[1] = array("e"=>"45", "f"=>"50", "g"=>"28");
$a2[0] = array("h"=>"35", "i"=>"37", "j"=>"43");
$a2[1] = array("k"=>"45", "l"=>"50", "m"=>"2800");
$x1[0] = array("n"=>"35", "o"=>"37", "p"=>"43");
$x1[1] = array("q"=>"45", "r"=>"50", "s"=>"2800");
$x2[0] = array("t"=>"35", "u"=>"37", "v"=>"43");
$x2[1] = array("w"=>"45", "x"=>"50", "y"=>"10000");
$arr[0] = array("abc"=>$a1,"hij"=>$x1);
$arr[1] = array("efg"=>$a2,"klm"=>$x2);
答案 0 :(得分:1)
您可以使用递归查找功能在数组中搜索给定值,例如:
function findValueRecursive($array, $search)
{
foreach ($array as $key => $value) {
if (is_array($value)) {
if (findValueRecursive($value, $search)) {
return true;
}
} elseif ($value == $search) {
return true;
}
}
return false;
}
var_dump(findValueRecursive($arr, 10000)); // true
var_dump(findValueRecursive($arr, 10001)); // false
答案 1 :(得分:1)
如果要在整个数组中搜索一个值,则可以创建递归函数,如下所示:
function recInArr($arr, $value) {
if (!is_array($arr))
return ($arr == $value);
foreach($arr as $elem)
if (recInArr($elem, $value))
return true;
return false;
}
通过这种方式,您可以调用recInArr($arr, 1000)
来查找您的值是否存在
如果您需要查找仅在特定列上找到的值,则可以对此进行修改:
function recInArr($arr, $col, $value) {
foreach($arr as $key => $val) {
if (!is_array($val)) {
if ($key == $col && $val == $value)
return true;
} else
if (recInArr($val, $col, $value))
return true;
}
return false;
}
现在致电recInArr($arr, "y", 10000)