PHP - установить все пустые или нулевые в массиве, в 0, без цикла foreach - PullRequest
1 голос
/ 30 июня 2011

Я работаю с большим массивом.Мы отображаем все поля данных в массиве с таблицей.Некоторые поля в массиве являются нулевыми, потому что пользователь не накопил ничего в этом поле.Тем не менее, мы хотели ноль, когда у них есть такой результат.Наше решение состояло в том, чтобы отобразить значение вместе с intval ()

intval(@$users[$user_id]['loggedin_time'])

Что хорошо, но это уродливо и не элегантно.Есть ли способ, без цикла foreach, установить все значения '' в массиве равными 0?

Ответы [ 2 ]

9 голосов
/ 30 июня 2011

Да, с array_map:

$input = array(...);
$output = array_map(function($item) { return $item ?: 0; }, $input);

В приведенном выше примере используются средства PHP> = 5.3 (встроенное объявление анонимной функции и краткая форма троичного оператора),но вы можете сделать то же самое в любой версии PHP (только, может быть, более многословно).

Вы должны немного подумать об условном внутри функции обратного вызова;то, которое я использую здесь, заменит все значения, которые оцениваются как false как логические значения с нулями (это включает в себя пустую строку, но также включает, например, значения null - так что вы можете настроить условие, в зависимостина ваши потребности)*

0 голосов
/ 30 июня 2011

Я предполагаю, что вы извлекаете эту информацию из какой-либо базы данных.

Если вы получаете массив из таблицы Mysql, попробуйте что-то вроде этого: http://forums.mysql.com/read.php?20,36579,36579#msg-36579

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...