in_array 不起作用的原因是因为您的值 6、5 和 8 存储在主数组的另一个数组中。
所以要搜索一个值,你可以用一个函数遍历每个数组:
非递归(1 级深度搜索)
function searchInArray($array, $value){
// If the array parameter is not an array and the value parameter is an array, return false
if(!is_array($array) || is_array($value))
return false;
// If the value is found in the main array, return true
if(in_array($value, $array))
return true;
// Loop through each subarray
foreach($array as $subarray){
if(in_array($value, $subarray))
return true;
}
}
假设这是你的数组:
$array = [[6], [5], [8]];
如果我们用var_dump(searchInArray($array, 8)); var_dump 结果:
bool(true)
递归(无限深度搜索)
使用此函数,它将在每个子数组中搜索...这是一个recursive function:
function recursiveSearch($array, $value){
// If the array parameter is not an array and the value parameter is an array, return false
if(!is_array($array) || is_array($value))
return false;
// If the value is found in the main array, return true
if(in_array($value, $array))
return true;
// Loop through each subarray and make a recursive call
foreach($array as $subarray){
if(recursiveSearch($subarray, $value))
return true;
}
return false;
}
所以我们假设这次是你的数组:
$array = [[6], [5], [8, [9]]];
结果:
var_dump(recursiveSearch($array, 4)); // false
var_dump(recursiveSearch($array, 8)); // true
var_dump(recursiveSearch($array, 9)); // true