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

时间:2018-09-20 02:13:10

标签: php

我有一个如下所示的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 个答案:

答案 0 :(得分:0)

您可以尝试这样,但是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;