我试图查看字符串是否在数组中,但是当尝试使用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
请帮助
答案 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++;
}