【问题标题】:How to check if value exists in multidimensional array with keys? [duplicate]如何检查值是否存在于带有键的多维数组中? [复制]
【发布时间】:2019-10-16 20:29:54
【问题描述】:

我有一个如下所示的数组:

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

【问题讨论】:

  • This answer 看起来像你想要的,或者至少可以很容易地适应。

标签: php arrays


【解决方案1】:

您必须将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';
}

输出:- https://3v4l.org/TUtSL

如果你也想显示该数组,然后使用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]);
}

输出:-https://3v4l.org/ZlYGp

如果找到多个匹配项:

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

输出:-https://3v4l.org/p439T

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2021-11-02
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2011-07-05
    相关资源
    最近更新 更多