$firstarray = array("first"=>'pakistan',"second"=>'bangladesh',"third"=>'');
У меня есть массив вроде выше, некоторые ключи имеют значение, а некоторые ключи не имеют значения. поэтому я хочу искать этот массив и не помещать для тех ключей, которые не имеют значения.
Результат, который я хочу:
$newfirstarray = array("first"=>'pakistan',"second"=>'bangladesh',"third"=>'No');
Я ищу в Интернете функции поиска, такие как array_filter()
, array_map()
. я не знаю, либо он работает с этим
Моя маленькая попытка
$firstarray = array("first"=>'pakistan',"second"=>'bangladesh',"third"=>''); foreach($firstarray as $keyx){ if($keyx==''){ $keyx='no'; //sorry for this example, at this point i don't know how to put values. print_r($firstarray ); } }
Этот код показывает мне исходный массив и не помещает его как значение для третьего ключа.
Прокрутите массив и проверьте, равно ли значение ""
если да, замените его на no
:
$result = array_map(function($v){$v == "" ? "no" : $v;}, $array);
Вероятно, проще всего просто запустить цикл foreach по ссылке, например:
foreach ($array as $key => &$val) { if ($key == '') { $val = 'No'; } }
Значение &
означает, что вы назначаете значение по ссылке, поэтому его можно назначить справа в цикле.
Изменить. Поскольку вместо нового вам нужен новый массив, вы можете легко сделать это:
$new = array(); foreach ($array as $key => $val) { if ($val == '') { $val = 'No'; } $new[$key] = $val; }
Таким образом, вы просто проходите первый массив и создаете новый «на лету».
Мне нравится str_replace()
но поскольку вы упомянули array_map()
:
$newfirstarray = array_map(function($v){ return empty($v) ? 'No' : $v; }, $firstarray);
Правильный foreach()
будет:
foreach ($firstarray as $key => $val) { $newfirstarray[$key] = empty($val) ? 'No' : $val; }