2014-04-22 3 views
2

안녕하세요 배열에서 요소를 제거하는 데 도움이 찾고 있습니다. 내 배열 $rooms 객실당 이벤트가 발생합니다. 각 방에는 고유 한 배열이 있으며 각 이벤트에는 방 배열 내에 고유 한 배열이 있습니다. $rooms을 통해 반복하고 방 ID를 표시하고이 루프 내에서 해당 방의 이벤트를 반복하고 내용을 표시합니다. 표시되어있는 이벤트의 배열을 제거하여 같은 루프를 반복 할 때 비교할 시간이 없도록하고 싶습니다.배열에서 요소 제거

다음은 내가 설명하는 프로세스의 예입니다. 나는 foreach 문을 사용하고 있습니다로는이 논리의 요소를 삭제하는 이해되지 않는다 알고 있지만, 내 응용 프로그램 내에서 함수의 로직을 필요로 ..

$ 객실

array(3) 
{ 
    [1]=> array(2) 
    { 
     ["rid"]=> string(1) "1" 
     ["events"]=> array(0) 
     { } 
    } 
    [2]=> array(2) 
    { 
     ["rid"]=> string(1) "2" 
     ["events"]=> array(0) 
     { } 
    } 
    [3]=> array(2) 
    { 
     ["rid"]=> string(1) "3" 
     ["events"]=> array(2) 
     { 
      [0]=> array(7) 
      { 
       ["lname"]=> string(20) "xxxxxxxxxxxxxxxxxxxx" 
      } 
      [1]=> array(7) 
      { 
       ["lname"]=> string(10) "yyyyyyyyyy" 
      } 
      } 
     } 
} 

루프

foreach ($rooms as $room): 
    echo $room['rid']; 
    foreach ($room['events'] as $event): 
     echo $event['lname']; 

foreach 내에서 제가 코드를 삽입해야하며, 같은 코드 모습이 정말 좋은 것입니다 방법 위치를 말해 줄 수 있다면. 나는 그것이 echo $event['lname'] 직후에 있어야한다고 생각하지만, 나는 그것을 해제 할 수 있도록 표시되는 요소를 찾는 방법을 알아낼 수 없습니다 ..

답장을 보내 주셔서 감사합니다. 답장을 보내 주셔서 감사합니다.

답변

1

이벤트를 반향 출력 한 후 설정을 해제하면되지만 $ rooms에서 참조해야하므로 각 레벨에서 해당 키를 사용해야합니다. 이것을 시도하십시오 :

foreach($rooms as $i => $room) { 
    echo $room['rid']; 
    foreach($room['events'] as $j => $event) { 
     echo $event['lname']; 
     unset($rooms[$i]['events'][$j]); 
    } 
} 

here의 예를 볼 수 있습니다.

+0

그런 다음 'echo'를 입력했습니다.

'.var_dump($room).'
';'표시된 Vardump에는 여전히 이벤트가 있습니다. 내부 foreach가 닫힌 후에 echo가 발생했습니다. –

+0

@CreamWhippedAirplane 설정이 잘못되었으므로'$ rooms' 대신'$ room'을 넣겠습니다. 이제 수정했습니다. 업데이트 된 eval.in 링크를 확인하면 덤핑과 작동을 볼 수 있습니다. – Styphon

+0

나를 위해 일하고 싶지 않다 :/내가 뭘 잘못하고 있는지 말할 수 없다. 특히 그것은 당신이 평가에서 작동하기 때문에. 문제는 내 응용 프로그램에서 내부 foreach는 다음과 같이 보이는 foreach입니다. $ x = 0; $ x <31; $ x ++) : 기본적으로 내가하고있는 것은 생성하는 것입니다. 'rid'를 왼쪽 표제로 사용하고이 foreach를 사용하여 31 일 셀을 생성하고 매일 $ room [ 'events']'를 반복하여 현재 생성 된 것과 일치하는 이벤트가 있는지 확인하십시오 세포의 날 ... –