【问题标题】:How to remove null values with PHP?如何使用 PHP 删除空值?
【发布时间】:2020-09-14 17:57:49
【问题描述】:

我是处理 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
    }
]

【问题讨论】:

标签: php json code-cleanup


【解决方案1】:

这是一种方法:

<?php

$s = <<<eof
[{"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}]
eof;

$m_json = json_decode($s, true);
$f = fn ($v): bool => $v !== null;

foreach ($m_json as $m_tick) {
   $a[] = array_filter($m_tick, $f);
}

var_export($a);

我个人不喜欢这样,因为您将不同类型的值传递给过滤器函数。对于强类型语言,这是不允许的。但替代方法是枚举“好”属性,因此在这种情况下,这似乎是一个很好的折衷方案。

【讨论】:

    【解决方案2】:

    您不需要循环,只需使用array_filter

    <?php
    
    $array = array(1 => "PHP code tester Sandbox Online",  2 => null);
    print_r($array);
    
    $arrayFiltered = array_filter($array);
    print_r($arrayFiltered);
    

    这是一个简短的example

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 2017-06-16
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多