Я новичок в работе с JSON и PHP, и у меня возникают проблемы с очисткой этого типа массива. вот то, что я думал, может сработать, но я еще не понимаю, как это не сработало {{0}}

[{"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}]

2
Jesus Medrano 14 Сен 2020 в 20:57

2 ответа

Лучший ответ

Вот один из подходов:

<?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);

Лично мне это не нравится, так как вы передаете функции фильтра значения разных типов. Для строго типизированного языка это недопустимо. Но альтернативой было бы перечисление «хороших» свойств, так что в данном случае это казалось хорошим компромиссом.

0
Steven Penny 14 Сен 2020 в 18:25

Вам не нужны циклы, просто используйте array_filter

<?php

$array = array(1 => "PHP code tester Sandbox Online",  2 => null);
print_r($array);

$arrayFiltered = array_filter($array);
print_r($arrayFiltered);

Вот небольшой пример

0
Slava Rozhnev 14 Сен 2020 в 18:13