2016-03-23 64 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); 
    } 
} 

這段代碼顯示了我原來的數組,而不是把不作爲第三鍵的值。

+0

在下面添加了正確的'foreach()'。 – AbraCadaver

回答

2

遍歷陣列,並且檢查值等於""如果是用no替換爲:

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

呵呵,不知道str_replace()需要數組。這比我的答案要好得多。 :) –

+0

@JoelHinz搜索,替換和主題參數可以採用數組作爲參數。許多人不知道關於str_replace()的內容,即使它在手冊中有記錄。 – Rizier123

+0

是的,我知道前兩個參數,但是我很長一段時間沒有閱讀過這個函數的文檔。 :) –

4

這可能比較容易只是參考運行foreach循環,就像這樣:

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

&意味着你引用賦值,因此它可以從右邊的循環內進行分配。

編輯:既然你想要一個新的數組,那麼你可以很容易地做到這一點:

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

這樣的話,你只是去通過第一陣列和創建即時一個新的。

+0

然後我可以如何使新數組有價值沒有鑰匙。然後print_r呢? –

+0

請參閱我的編輯。 –

+0

沒有獲得第三個鍵的第三個值。 –

1

我愛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; 
} 
+0

我一直以爲你是愛'array_column()';) – Rizier123

+1

@ Rizier123:我愛array_column()的更多! :-) – AbraCadaver