我有一个看起来像这样的数组:
$array = array(
array('name' => 'number1', 'number' => '0612345675'),
array('name' => 'number2', 'number' => '0634345675'),
array('name' => 'number3', 'number' => '0634378675')
);
现在我有这个号码:0634345675
。
如何检查数组$array
中是否存在该数字?
我试图这样做:
if(!in_array('0634345675', $array)){
// insert into DB
}
但这会不断添加多个相同的行。
有人知道如何检查$array
中是否存在此号码吗?
完整代码:
foreach($DN as $number){ // $DN got ['0634345675', '0632545675', '0614342375']
if(!in_array($number, $array)){
// insert into DB
}
}
答案 0 :(得分:4)
您必须将in_array()
与array_column()
一起使用
<?php
$array = array(
array('name' => 'number1', 'number' => '0612345675'),
array('name' => 'number2', 'number' => '0634345675'),
array('name' => 'number3', 'number' => '0634378675')
);
$valueToFind = '0634345675';
if (in_array($valueToFind, array_column($array, 'number'))){
echo 'found';
}else{
echo 'not found';
}
如果您也想显示该数组, 然后使用array_search()
if (in_array($valueToFind, array_column($array, 'number'))){
echo 'value found';
echo PHP_EOL;
$key = array_search($valueToFind, array_column($array, 'number'));
echo "matched array is";
echo PHP_EOL;
print_r($array[$key]);
}
如果找到多个匹配项:
$valueToFind = '0634378675';
$matchedArray = array();
foreach($array as $arr){
if($valueToFind == $arr['number']){
$matchedArray[] = $arr;
}
}
if( count($matchedArray) > 0){
echo "match found";
echo PHP_EOL;
print_r($matchedArray);
}