2012-07-19 4 views
1

배열()에서 Null 값을 수정하고 싶습니다. 나는 단지 그들을 수정하지 않기 위해 수정하고 싶다.배열의 빈 값을 수정하십시오.

$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' 시도 ... –

답변

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

이 코드는 내 컴퓨터에서 완벽하게 작동합니다.

+0

을 표시하고 당신은 또한 (추가 할 수 있습니다 || $ val == '') –

+0

나는 OP가 그의 예제에서 주어진 null 대신에 빈을 의미한다고 생각합니다. –

+0

PHP에서'' ''는 (물론 우리가 타입을 비교하지 않는다면) NULL로 간주되지만, 그것을 변경하는 데 아무런 문제가 없습니다. – mdziekon

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

+0

키 값이 필요합니다. – Peon

+0

왜 필요한가요? reference를 사용할 때 원래 배열을 변경하기 위해'$ key'가 필요하지 않습니다. 왜냐하면'$ value = 'N';이 간단 할 것이기 때문입니다. – mdziekon

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