【问题标题】:Check if data is in array in PHP [closed]检查数据是否在PHP中的数组中[关闭]
【发布时间】:2021-10-27 22:13:00
【问题描述】:

使用 Codeigniter 3 我需要比较两个 json 对象。 为了更好地解释,下面的json数据我必须检查:

[
    {
        "id":23456,
        "name":"Some data"
    },
    {
        "id":98765,
        "name":"Other data"
    },
    {
        "id":12345,
        "name":"A glider"
    },
    {
        "id":34567,
        "name":"Other aircraft"
    }
]

我需要将上面的数据与下面的json对象进行比较。

[
    {
        "id":23456,
        "name":"Some data",
        "available": 0,
    },
    {
        "id":98765,
        "name":"Other data",
        "available": 1,
    },
    {
        "id":12345,
        "name":"A glider",
        "available": 0,
    },
    {
        "id":34567,
        "name":"Other aircraft",
        "available": 0,
    },
    {
        "id":56789,
        "name":"Dummy aircraft",
        "available": 0,
    },
]

我必须从第一个 json 对象中选择数据,在第二个对象中比较“可用”字段等于 1。

希望编辑我的问题,我希望现在很清楚。 我为我糟糕的英语道歉。

【问题讨论】:

    标签: php json codeigniter


    【解决方案1】:

    试试这个:

    $data = json_decode('[
        {
            "id":23456,
            "name":"Some data"
        },
        {
            "id":98765,
            "name":"Other data"
        },
        {
            "id":12345,
            "name":"A glider"
        },
        {
            "id":34567,
            "name":"Other aircraft"
        }
    ]');
    for ($i = 0; $i < count($data); $i++) {
         if (property_exists($data[$i], 'id') && property_exists($data[$i], 'name')){
             $data[$i]->available = 1 ;
         }else{
             $data[$i]->available = 0;
         }
    }
    var_dump($data);
    

    【讨论】:

    • 感谢 Nero 的反馈和帮助。如果我没记错的话……上面的代码解析了第一个 JSON 数据并添加了可用标志……但没有将第一个 JSON 数据与第二个数据进行比较。我要做的是...获取第一个 JSON 对象中的每个数据...检查它是否在第二个 JSON 结构中,如果在第二个 JSON 结构中其可用标志为 1,则返回它。再次感谢。
    猜你喜欢
    • 2017-04-13
    • 2018-01-20
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多