2012-09-20 4 views
0

값으로 배열 항목을 제거하고 싶습니다. 키를 지정할 수 없습니다. 다음은 배열입니다. 배열 값을 내림차순으로 정렬했습니다.값으로 연관 배열을 해제합니다.

Array 
(
    [this] => 15 
    [that] => 10 
    [other] => 9 
    [random] => 8 
    [keys] => 4 
) 

값이 10 미만인 모든 항목의 설정을 해제하려면 어떻게해야합니까?

+0

http://php.net/manual/en/function.array-filter.php –

+2

이것은 단지 1 차원 배열입니다. – knittl

답변

0
$test = array(
    "this" => 15, 
    "that" => 10, 
    "other" => 9, 
    "random" => 8, 
    "keys" => 4 
); 

echo "pre: ";print_r($test); 
pre: Array ([this] => 15 [that] => 10 [other] => 9 [random] => 8 [keys] => 4) 

실행을 Knittl하기 :

foreach($test AS $key => $value) { 
    if($value <= 10) { 
     unset($test[$key]); 
    } 
} 

결과는 다음과 같습니다

echo "post: ";print_r($test); 
post: Array ([this] => 15) 
4

array_filter 기능 사용

$a = array_filter($a, function($x) { return !($x < 10); }); 
+0

PHP 5.3+에서만 작동합니다. – JvdBerg

+1

나는이 작업을보다 훌륭하고 우아한 방식으로 수행 할 수 있음을 알고있었습니다.이 답변입니다. 이전 버전'$ a = array_filter ($ a, 'functionName');에 대해 이전에 선언 된 함수의 이름을 문자열에 전달해야합니다. –

+0

좋은 대답입니다. 5.3 이상을 사용하지 않습니다. – madphp

0
foreach($array as $key => $value) 
    if($value < 10) 
    unset($array[$key]) 
+0

어떤 차이를 만들 가치에 대한 참조는 어떻습니까? –

+0

맞아요, 뇌의 소리가 나야합니다. – JvdBerg

0

모든 값의 int 있다고 가정을 :

for (i=9;i>=0;i--) 
{ 
    while (array_search($i, $assocArray) !== false) 
    { 
     unset($assocArray[array_search($i, $assocArray)]); 
    } 
} 

이 아마이 일을 더 우아한 방법이 있지만, 발열에 확고한 그립을 가지고 내 뇌 :)

knittl 님의 답변은 정확하지만 이전 버전의 PHP 당신은 't 익명 기능을 사용할 수 있습니다, 단지 수행

function filterFunc($v) 
{ 
    return $v >= 10; 
} 
$yourArray = array_filter($yourArray,'filterFunc'); 

신용이 코드

관련 문제