2016-09-21 2 views
1

array_filter를 사용하여 배열에서 0과 null을 필터링합니다.array_filter는 하나의 0과 하나의 null을 남깁니다.

코드 : array_filter없이

while ($row1 = $sth1->fetch(PDO::FETCH_ASSOC)){ 

    $rows_shared_id[$row1['shared_id']]['shared_id'] = $row1['shared_id']; 

} 

$erows_shared_id = array_filter($rows_shared_id); 

foreach($erows_shared_id as $evalue){ 

    echo $evalue['shared_id'] . "<br>"; 

} 

결과, 0의 값 또는 null를 여러 셀을 가지고있다. array_filter를 사용하면 각 필터의 ​​첫 번째 필터를 제외하고 모든 0과 널을 필터링합니다. 그래서 하나의 0과 하나의 null 값을 가진 배열이 남았습니다. 왜 모든 것을 삭제합니까? 그러나 첫 번째 문제는 어떻게 해결합니까? 감사!

+2

사실 후에 'array_filter' 함수를 사용하는 대신 성능 향상을 위해 while 루프에서 0과 null을 필터링하십시오. 'array_filter' 함수가 왜 작동하지 않는지에 대해서는 확실하지 않습니다! 귀하의 입력 배열을보고 싶습니다. –

답변

1

array_filter은 단일 레벨 배열에서 작동하지만 사용자는 2 레벨 배열입니다. 배열의 하위 배열에

시도 매핑 array_filter는 :

$erows_shared_id = array_map('array_filter', $rows_shared_id); 

그런 다음 어린이들로 빈 배열을 가지고있는 키를 제거 다시 배열을 필터링 할 수 있습니다.

$erows_shared_id = array_filter(array_map('array_filter', $rows_shared_id)); 
관련 문제