2012-07-19 46 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'; 
    } 
}