Поместить значения в многомерные массивы

$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; }