如何使用php in_array函数与多个数组

时间:2015-07-01 14:07:45

标签: php


我有这个数组:

$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'; }

感谢您的帮助

5 个答案:

答案 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)

foreach($ name as $ value){    if(in_array(43,$ value)){     回声“1”;     打破;    } }

答案 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';
}