为什么In_Array()PHP无法用于多维数组

时间:2018-10-26 19:35:12

标签: php arrays laravel codeigniter-3

我试图查看字符串是否在数组中,但是当尝试使用in_array搜索时,即使字符串在数组中也总是返回false

  $array = { ["cardId"]=> int(233) ["mask"]=> string(14) "498765xxxx8769" ["brand"]=> string(4) "VISA" ["scheme"]=> string(4) "VISA" } }
    if(in_array('512345xxxx2346', $array)
    {
       echo "512345xxxx2346 found !!";
    }else {
      echo "512345xxxx2346 not found !!";
    }

输出

 512345xxxx2346 not found

请帮助

3 个答案:

答案 0 :(得分:1)

如果您有多张卡片,可以遍历它们并检查每张卡片。

$cards = [["cardId" => 233, "mask" => "512345xxxx2346"], ["cardId" => 234, "mask" => "498765xxxx8769"]]
foreach($card in $cards) {
  if (in_array("512345xxxx2346", $card)) {
    echo "512345xxxx2346 found!";
  } else {
    echo "512345xxxx2346 not found!";
  }
}

答案 1 :(得分:0)

您的示例根本不起作用,无论如何结果都是正确的,因为您在声明中以4开头并测试以5开头的一个。

PHP中的数组在方括号内声明,其键与值之间用=>隔开。

$array = ["cardId" => 233, "mask" => "512345xxxx2346 ", "brand" => "VISA", "scheme" => "VISA"];
if (in_array('512345xxxx2346 ', $array)) {
  echo "512345xxxx2346 found !!";
} else {
  echo "512345xxxx2346 not found !!";
}

答案 2 :(得分:0)

您的语法都是错误的,您可以在方括号 [“ key” => value] 中声明数组,也可以使用 array(“ key” => value)声明数组。

使用正确的语法,您的示例将返回与if校验的匹配项:

$array = array(
   'cardId' => 233,
   'mask' => '498765xxxx8769',
   'brand' => 'VISA',
   'scheme' => 'VISA'
);

if(in_array('498765xxxx8769', $array)) {
   echo "498765xxxx8769 found !!";
} else {
    echo "498765xxxx8769 not found !!";
}

假设您需要检查多张卡片,则可能需要一个多维数组,在其中将数组放入数组中(用逗号分隔)。

在这种情况下,您应该使用循环检查第一个阵列内的每个阵列(或卡):

$array2 = array(
    array(
        'cardId' => 233,
        'mask' => '498765xxxx8769',
        'brand' => 'VISA',
        'scheme' => 'VISA'
),
    array(
        'cardId' => 367,
        'mask' => '839510xxxx0045',
        'brand' => 'VISA',
        'scheme' => 'VISA'
    )
);

$i = 1;
foreach ($array2 as $a) {
    if (in_array('498765xxxx8769', $a)) {
        echo "Card " . $i . ": 498765xxxx8769 found !!" . "<br>";
    } else {
        echo "Card " . $i . ": 498765xxxx8769 not found !!" . "<br>";
    }
$i++;
}