如何用 PHP 删除空值?

我刚接触 JSON 和 PHP,在清理这种类型的数组时遇到问题。这是我认为可行的,但我还不明白它是如何不起作用的


for ($i = 0; $i < count($items); $i++) {

    if ($items[$i][] === null) {

        unset($items[$i]['']);

    }

}

[

    { 

        "ticketNumber": Ha&51,

        "qty": 0, 

        "title": "Wheat", 

        "price": 44.2,

        "purchaseDate": null,

        "date": null

    },

    { 

        "ticketNumber": H88i51,

        "qty": 2, 

        "title": "Prince",

        "price": 12.99,

        "purchaseDate": null,

        "date": null

    }

]


慕森卡
浏览 96回答 2
2回答

慕尼黑5688855

这是一种方法:<?php$s = <<<eof[{"ticketNumber": "Ha&51","qty": 0,"title": "Wheat", "price":44.2,"purchaseDate": null,"date": null},{&nbsp; &nbsp; &nbsp; &nbsp; "ticketNumber": "H88i51","qty":2, "title": "Prince", "price": 12.99,"purchaseDate": null,"date": null}]eof;$m_json = json_decode($s, true);$f = fn ($v): bool => $v !== null;foreach ($m_json as $m_tick) {&nbsp; &nbsp;$a[] = array_filter($m_tick, $f);}var_export($a);我个人不喜欢这样,因为您将不同类型的值传递给过滤函数。对于强类型语言,这是不允许的。但另一种选择是列举“好的”属性,因此在这种情况下这似乎是一个很好的折衷方案。

梵蒂冈之花

您不需要循环,只需使用array_filter<?php$array = array(1 => "PHP code tester Sandbox Online",  2 => null);print_r($array);$arrayFiltered = array_filter($array);print_r($arrayFiltered);
打开App,查看更多内容
随时随地看视频慕课网APP