2011-09-03 9 views
2

PHP를 사용하여 요소의 값을 기반으로 배열에서 요소를 제거하려고합니다. 다음 배열 예를 들어PHP 배열에서 값 제거

:

Array 
(
    [671] => Array 
     (
      [0] => 1 
      [1] => 100 
      [2] => 1000 
     ) 
    [900] => Array 
     (
      [0] => 15 
      [1] => 88 
     } 
) 

나는 제거하기 위해 내부 배열에 값을 지정할 수 있도록하고 싶습니다.

Array 
(
    [671] => Array 
     (
      [0] => 1 
      [2] => 1000 
     ) 
    [900] => Array 
     (
      [0] => 15 
      [1] => 88 
     } 
) 

내 첫번째 생각은 내가 그것을 발견했을 때의 foreach 및 설정 해제 "잘못된"값을 사용하여 배열을 통해 루프를했다,하지만 그건하지 않는 것 : 예를 들어 나는 결과 배열의 모습 (100)를 지정한 경우 원래 배열을 참조하고 생성 된 루프 변수 만 참조하십시오.

감사합니다. 아이디어의

답변

4
foreach($array as $id => $data){ 
    foreach($data as $index => $offending_val){ 
     if($offending_val === 100){ 
      unset($array[$id][$index]); 
     } 
    } 
} 
-1

커플 :

당신은 값이 사용자가 설정하고 싶은 경우는 false 반환하는 콜백 함수에 전달 array_filter 시도 할 수 있습니다. 위의 예를 사용 :

$ new_inner_array = array_filter ($ inner_array, $ callback_that_returns_false_if_value_100)

더 정교한 뭔가를하려는 경우에는 SPL의 ArrayIterator 클래스, 특히 offsetUnset() 메소드를 탐험 할 수있다.

0

당신은 사용할 수 있습니다

array_walk($your_array, function(&$sub, $key, $remove_value) { 
    $sub = array_diff($sub, array($remove_value)); 
}, 100);