2016-03-23 7 views
2
$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); 
    } 
} 

を試してみてください。このコードは、元の配列と第三のキーの値として無入れていない私を示して仕事のどちらかわかりません。

foreach ($array as $key => &$val) { 
    if ($key == '') { 
     $val = 'No'; 
    } 
} 

&は、あなたが参照して値を割り当てることを意味し、それは右のループ内から割り当てることができます。

+0

以下に適切な 'foreach()'を追加しました。 – AbraCadaver

答えて

2

ループとはいnoに置き換える場合は、値が""に等しいかどうかを確認:

$newfirstarray = array_map(function($v){ return empty($v) ? 'No' : $v; }, $firstarray); 

正しい:あなたはarray_map()を述べたので、

$result = array_map(function($v){$v == "" ? "no" : $v;}, $array); 
+0

ええ、str_replace()が配列をとるかどうかわかりませんでした。それは私よりずっと良い答えです。 :) –

+0

@JoelHinz検索、置換、件名のパラメータは引数として配列をとることができます。多くの人がstr_replace()についてこれを知っていませんが、マニュアルには書かれています。 – Rizier123

+0

ええ、私は最初の2つのパラメータについて知っていましたが、私はその関数のドキュメントを非常に長い時間読んでいません。 :) –

4

それはちょうどこのように、参照することによりforeachループを実行するために、おそらく最も簡単です。

編集:あなたが代わりに新しい配列をしたいので、あなたはこれを簡単に行うことができます

$new = array(); 
foreach ($array as $key => $val) { 
    if ($val == '') { 
     $val = 'No'; 
    } 
    $new[$key] = $val; 
} 

そうすれば、あなただけの最初の配列を通過し、オンザフライで新しいものを作成します。お使いのアレイによる

+0

次に、どのように私はキーの値がない新しい配列を作ることができます。それからprint_rそれ? –

+0

私の編集をご覧ください。 –

+0

3番目のキーに3番目の値が表示されません。 –

1

を私はstr_replace()を愛するが、 foreach()は、

foreach ($firstarray as $key => $val) { 
    $newfirstarray[$key] = empty($val) ? 'No' : $val; 
} 
+0

そして、私はいつもあなたが 'array_column()';と恋していると思っていました;) – Rizier123

+1

@ Rizier123:array_column()が大好きです。 :-) – AbraCadaver