2016-10-03 3 views
-2

비어 있지 않은 키 - 값 쌍에 대해서만 PHP 배열 (연관) 선언을 작성하려고하는데, 이는 $ _POST에서 가져옵니다. 모든 추측, 이것을하는 방법? 다음

$my_array = [ 

"k1"=>"$val1", 
"k2"=>"$val2", 
"k3"=>"$val3", 
"k4"=>"$val4" 

]; 

그러나, $ val4 & $ val3 인 경우 빈/NULL/does'nt 존재 :

$my_array = [ 

"k1"=>"$val1", 
"k2"=>"$val2" 

]; 

감사

+1

u는'array_filter을 시도 할 수 있습니다()' – devpro

+0

키는 없습니다 필드 이름으로 $ _POST에서 오는 것은 사용자 정의입니다. –

+0

DOWNVOTES를 주셔서 감사합니다. –

답변

0

$ _POST 이미 연관 배열입니다. 예를 들어, 양식에서 키는 '이름'요소이고 값은 사용자의 입력입니다. 빈 입력이 여전히 키/값 쌍을 생성하지만 쉽게 array_filter()

EDIT 이러한 필터링 할 수

다음

이 예제 구현 :

array_filter($array, function(x) { 
    if is_null(x) return false; 
    else return true; 
}); 
+0

배열 필터가 비어있는 것으로 취급해야합니다. '0'은이'' '로 생각하고 싶지 않을 수도 있습니다 – ArtisticPhoenix

+0

@ArtisticPhoenix array_filter()는 array_filter()가 콜백 메소드를 사용하여 필터링 대상과 제외 대상을 정의하기 때문에 0으로 처리합니다. –

+0

키가 필드 이름으로 $ _POST에서 오지는 않지만 사용자 지정입니다. –

0

다른 사람들이 당신이 배열 필터를 사용할 수 있습니다 언급 한 바와 같이,

당신이 0의 값이 비어로 치료를 받고 싶지 않는 경우에 당신이

과 같은 작업을 수행 할 수 있습니다

배열 필터는 0, '', false, null을 취급하고 나는 '0' 그리고 아마도 몇 가지 다른 사람들이 모두 비어 생각합니다. 내보기와 같은 콜백을 사용할 수 있습니다. 콜백이 false를 반환하면 0 항목이 true (또는> 0)를 반환 할 때 제거되어 유지됩니다. 따라서 strlen은 문자열의 길이와 같은 값을 반환하고 0 길이의 문자열은 모두 제거됩니다.

-note- 이것은 일반적으로 중첩 된 배열을 가지지 않으므로 $ _POST에서 문제가 없지만 중첩 된 배열이있는 경우 strlen은 분명히 배열 (이 코드는 $item = array() 콜백)에서 작동하지 않습니다.

+0

키가 필드 이름으로 $ _POST에서 오는 것이 아니며 사용자 정의입니다. –

-1

당신은 다음과 같이 null 또는 빈 값을 확인하는 함수를 작성할 수 있습니다에서 print_r의

<?php 

function transform(&$data) { 
    foreach(array_keys($data) as $key) { 
     if(is_null($data[$key]) 
      || empty($data[$key]) 
     ) { 
      unset($data[$key]); 
     } 
    } 
} 

// usage 
$data = [ 
    "example1" => 5, 
    "example2" => "some text", 
    "example3" => null, 
    "example4" => [], 
]; 

transform($data); 

print_r($data); 

?> 

예 출력() :

Array 
(
    [example1] => 5 
    [example2] => some text 
) 
+0

이전의 2 답변에서 말했듯이,'array_filter()'는 당신이 제안한 것을 이미 구현할 수있는 함수입니다. 다시 쓸 필요가 없습니다. –

+0

@MatthewGoulart 입력 사항을 주셔서 감사합니다. 아무 것도 다시 쓰지 않았습니다 :) –

관련 문제