2013-03-17 3 views
0

에서 항목을 제거나는 다음과 같은 포맷 배열이 배열

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [LASTNAME] => Name 
      [FIRSTNAME] => Name 
    ) 
    [1] => Array 
     (
      [id] => 2 
      [LASTNAME] => Name 
      [FIRSTNAME] => Name 
    ) 

를 등 내가 배열의 각 섹션의 LASTNAME 및 기타 항목을 제거하고 싶습니다.

다음 코드를 시도했지만 아무 소용이 없습니다.

foreach($s as $key => $object) { 

    foreach($object as $key=>$value) { 

      if ($key == "LASTNAME") { 
       unset($s['LASTNAME']); 
       } 
      } 
     } 

내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까? 미리 감사드립니다.

+3

내부 루프는) 심지어 귀하의 예제에서


당신은 내 대답을 시도하고 당신을 위해 작동합니다, 어쨌든 대신 아이의 $s에서 'LASTNAME'를 제거하려고 만하고 outter의'$ key' 변수를 덮어 씁니다. –

+0

음 DUH !! 그것은 그것을 고쳤다. 나는 책상에 있고 운전을하지 않고있어. 이 어리석은 짓을하면 심각한 해를 끼칠 수 있습니다 .-) –

+0

고마워요. 감사합니다. –

답변

0

잘못된 배열에서 설정을 해제하고 있습니다.

도움이 될 것입니다 각 루프에 대한 현재의 키를 저장 :

당신의 문제는 당신이 사본에 작동하고 있다는 점이다
foreach ($s as &$object) { 
    unset($object['LASTNAME']); 
} 

& 당신이 그것을로도 참조 할 줄 것이다 :

foreach($s as $key1 => $object) { 
    foreach($object as $key2=>$value) { 
     if ($key2 == "LASTNAME") { 
      unset($s[$key1][$key2]); 
     } 
    } 
} 
1

이 시도 위의 예제에서 어레이 내부를 반복하여 검사해야만 특정 키가 있는지 확인할 수 있습니다. 그냥 제거하십시오. - unset이 없으면 오류가 발생하지 않습니다.

0
<?php 
$array = Array(
    0 => Array(
      'id' => 1, 
      'LASTNAME' => 'Name', 
      'FIRSTNAME' => 'Name' 
    ), 
    1 => Array(
      'id' => 2, 
      'LASTNAME' => 'Name', 
      'FIRSTNAME' => 'Name' 
    ) 
); 

foreach($array as $key=>$value){ 
    unset($array[$key]['LASTNAME']); 
} 

echo '<pre>',print_r($array),'</pre>'; 
?> 
관련 문제