in_array();
这个已经尝试过在一维关联数组中可以,多维就行不通了。
deep_in_array();
这个PHP社区的方法,只试用多维数值数组,多维关联数组就行不通了,还有什么方法吗?
in_array();
这个已经尝试过在一维关联数组中可以,多维就行不通了。
deep_in_array();
这个PHP社区的方法,只试用多维数值数组,多维关联数组就行不通了,还有什么方法吗?
$arr= [
[
"id" => 1,
"type" => 1
],
[
"id" => 2,
"type" => 2
],
[
"id" => 3,
"type" => 3
],
[
"id" => 4,
"type" => 4
]
];
var_dump(in_array_recursive(2,$arr));//true
var_dump(in_array_recursive(5,$arr));//false
function in_array_recursive($needle, $haystack) {
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($haystack));
foreach($it as $element) {
if($element == $needle) {
return true;
}
}
return false;
}
根据@mylxsw 提示 laravel array_dot
var_dump(in_array(2,array_dot($arr)));//true
var_dump(in_array(5,array_dot($arr)));//false
function array_dot($array, $prepend = '')
{
$results = [];
foreach ($array as $key => $value) {
if (is_array($value)) {
$results = array_merge($results, array_dot($value, $prepend.$key.'.'));
} else {
$results[$prepend.$key] = $value;
}
}
return $results;
}
在Laravel中有一个array_dot
函数,可以实现多维->一维,然后对其使用in_array
判断即可。大致是这样的
in_array(VALUE, array_dot(ARRAY))
$data=[
['type'=>1,'per'=>3],
['type'=>2,'per'=>5],
['type'=>1,'per'=>4],
];
$type=2;
$arr=array_column($data, 'type');
if (in_array($type, $arr)){
}
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
3 回答1.8k 阅读
1 回答888 阅读✓ 已解决
题主可以去看一下
v-collect
扩展;https://github.com/VikinDev/v-collect