代码之家  ›  专栏  ›  技术社区  ›  Devmix

如何检查数组在对象中是否包含某些属性?

php
  •  0
  • Devmix  · 技术社区  · 6 年前

    我有这样一个JSON数组:

    [
     {
        "id": 10,
        "title": "book"
     },
     {
        "id": 24,
        "title": "cars"
     },
     {
        "id": 52,
        "title": "houses"
     }
    ]
    

    我想得到一个标题为“车”的对象的id。最简单的方法是这样循环:

        $customer_id = 0;
        foreach($arr as $value) {
            if($value->title === 'cars'){
                $customer_id = $value->id; // 24
            }
        }
    

    有没有更好的方法(也许不必使用foreach函数)?假设数组包含数百个对象,并且标题是唯一的。

    1 回复  |  直到 6 年前
        1
  •  0
  •   A l w a y s S u n n y    6 年前

    你可以这样试,但是 foreach() for() 已经足够好了:)

    <?php
        $json = '[{"id": 10, "title": "book"},{"id": 24,"title": "cars"},{"id": 52,    "title": "houses"}]';
        $array = json_decode($json,1);
        $title = 'cars';
        $result = array_filter($array, function ($element) use ($title) { return ($element['title'] == $title); });
        echo array_column($result,'id')[0];
    ?>
    

    演示: https://3v4l.org/MgKIL

    foreach() break;

    $id=0;
    foreach($array as $element){
        if($element['title']=='cars'){
            $id = $element['id'];
            break;
        }
    }
    echo $id;