2013-05-21 2 views
1

배열을 반복하는 foreach 루프가 있지만 배열에 $ item == 'survey-east-upper'가 포함되어 있는지 확인하고 그 것이 사실이라면 이전 $ 항목은 'survey-east'입니다. in_array을 조사했지만 이전 요소를 제거하는 방법을 알 수 없습니다. 배열에서 이전 요소를 제거 if 문 == true

내 원래 코드 :

foreach ($survey_array->Services as $service) { 
    foreach ($service as $item) { 
    echo '<li title="' . rtrim($item) . '" class="' . strtolower(preg_replace('/[^a-zA-Z0-9]/', '-', rtrim($item))) . '">' . $item . '</li>'; 
    } 
    } 

새로운 코드 :

foreach ($survey_array->Services as $service) { 
    foreach ($service as $item) { 
    if (in_array("survey-east-upper", $survey_array->Services)) { 
     unset($site->Services['survey-east']); 
    } 
    echo '<li title="' . rtrim($item) . '" class="' . strtolower(preg_replace('/[^a-zA-Z0-9]/', '-', rtrim($item))) . '">' . $item . '</li>'; 
    } 
    } 

나는이 방법을 수행 할 수 있습니까?

+1

한 위해에 포함이 있기 때문이다. (당신은 휴식을 사용하여 시도했다, 루프를 탈출)? –

+0

'$ site-> Services'에는 무엇이 들어 있습니까? 내용물을 버리실 수 있습니까? –

+0

휴식을 살펴볼 것입니다. 그래서 그것에 대해 갈 잘못된 방법입니까? http : //stackoverflow.com/questions/2304570/how-to-delete-object-from-array-inside-foreach-loop – ShambalaG

답변

2

foreach를 사용하지 말고 for를 사용하십시오. 반복 할 때마다 하나의 항목을보고 해당 항목을 확인하십시오. "survey-east-upper"의 경우 실제 반복을 건너 뛰고 계속 진행합니다.

foreach ($survey_array->Services as $service) { 
    for ($i = 0; $i < count($service) - 1; $i++) { 
    $item = $service[$i]; 
    if ($service[$i + 1] == "survey-east-upper") { 
     continue; 
    } 
    echo '<li title="' . rtrim($item) . '" class="' . strtolower(preg_replace('/[^a-zA-Z0-9]/', '-', rtrim($item))) . '">' . $item . '</li>'; 
    } 

    } 

편집 :

당신은 배열 $service[count($service) - 1]에서 마지막 항목을 가지고 뭔가를해야, 늘 루프

단순히 루프를 제거하지 않습니다