2012-07-19 59 views
1

我想修改數組中的空值()。我只想修改,而不是清理它們。修改數組中的空值

$arr = array ('a' => '', 'b' => 'Apple', 'C' => 'Banana'); 

我想修改,並獲得這樣的:

array(a => 'N', b => Apple, C => 'Banana'); 

我嘗試array_walk()和array_filter()。但是空值被刪除。

我獲得:

array('b' => 'Apple', 'C' => 'Banana'); 
+1

顯示你的'array_walk'嘗試... – 2012-07-19 12:24:37

回答

3
array_walk($arr, function(&$val) 
{ 
    if($val == null) 
    { 
     $val = 'N'; 
    } 
}); 

此代碼工作完全正常我的機器上。

+0

,您可能還需要添加(|| $ val =='') – 2012-07-19 12:27:23

+0

我認爲在他的例子中,OP意味着空而不是null。 – 2012-07-19 12:27:43

+0

PHP中的''''被認爲是NULL(當然如果我們不比較類型的話),但是在改變它的時候沒有問題。 – mdziekon 2012-07-19 12:28:34

0

你也可以這樣做:

$arr = array ('a' => '', 'b' => 'Apple', 'C' => 'Banana'); 

foreach ($arr as $key => $value) { 
    if (!$value) $value = 'N'; 
    $new_arr[ $key ] = $value; 
} 

print_r($new_arr); 

輸出:

Array 
(
    [a] => N 
    [b] => Apple 
    [C] => Banana 
) 
+0

爲什麼你不使用這樣的引用:'foreach($ arr as&$ value)'? – mdziekon 2012-07-19 12:36:21

+0

我也需要關鍵值。 – Peon 2012-07-19 12:38:44

+0

爲什麼你需要那個?當你使用引用時,你不需要'$ key'來改變原始數組,因爲簡單的'$ value ='N';'會做到這一點。 – mdziekon 2012-07-19 12:39:51

0
foreach ($yourArray as $k=>&$v) { 
    if (empty($v)) { 
     $v = 'N'; 
    } 
}