我有这个数组:
$name = array
(
array("b1",41),
array("b2",43),
array("b3",45),
array("b4",47)
);
我想检查43是否在阵列中而不使用" b2"
我的代码:
if(in_array(array("b2", 43), $name)) { echo '1'; }
此代码工作正常,但我想检查数组而不使用" b2"。
像这样:
if(in_array(array(NULL, 43), $name)) { echo '1'; }
if(in_array(array(43), $name)) { echo '1'; }
感谢您的帮助
答案 0 :(得分:0)
检查43是否在数组中,但“b2”不是。
foreach ($name as $arr) {
if (in_array(43, $arr) && !in_array("b2", $arr)) {
echo '1';
}
}
答案 1 :(得分:0)
一种方法是通过合并内部数组将数组展平为单个维度:
if(in_array(43, call_user_func_array('array_merge', $name))) { echo 1; }
它实际上并没有修改数组,而是检查看起来像这样的展平结果:
Array
(
[0] => b1
[1] => 41
[2] => b2
[3] => 43
[4] => b3
[5] => 45
[6] => b4
[7] => 47
)
你也可以过滤数组并检查它:
if(array_filter($name, function($v) { return in_array(43, $v); })) { echo 1; }
答案 2 :(得分:0)
答案 3 :(得分:0)
if(is_int(array_search(43, array_column($name, 1)))) {echo 1;}
确保$name
的数组结构与此处显示的相同
答案 4 :(得分:0)
if (array_reduce($name, function ($is, $n) { return $is || $n[1] == 43; })) {
echo 'yes';
}
作为可重复使用的功能:
function is_in_array_key(array $array, $key, $value) {
return array_reduce($array, function ($is, $i) use ($key, $value) {
return $is || $i[$key] == $value;
});
}
if (is_in_array_key($name, 1, 43)) {
echo 'yes';
}