2013-01-10 2 views
3

2 차원 배열을 가지고 있으며 아래의 코드 샘플에서 마지막 배열 항목 (이 경우 Array [3])을 항상 삭제/나는 그것을 세션에 넣기 전에.
저는 PHP로 아직 초보자이며 다음과 같은 시도를 성공하지 못했습니다.
도움을 주시면 대단히 감사하겠습니다.PHP의 2 차원 배열에서 마지막 배열 항목을 삭제하는 방법

if (is_array$shoppingCartContents)) { 
    foreach($shoppingCartContents as $k=>$v) { 
     if($v[1] === 999999) { 
     unset($shoppingCartContents[$k]); 
     } 
    } 
} 


$shoppingCartContents = Array 
(
[0] => Array 
    (
     [productId] => 27 
     [productTitle] => Saffron, Dill & Mustard Mayonnaise 
     [price] => 6.50 
     [quantity] => 3 
    ) 

[1] => Array 
    (
     [productId] => 28 
     [productTitle] => Wasabi Mayonnaise 
     [price] => 6.50 
     [quantity] => 3 
    ) 

[2] => Array 
    (
     [productId] => 29 
     [productTitle] => Chilli Mayo 
     [price] => 6.50 
     [quantity] => 2 
    ) 

[3] => Array 
    (
     [productId] => 999999 
     [productTitle] => Postage 
     [price] => 8.50 
     [quantity] => 1 
    ) 
) 
+0

코드에 오타가있을 수 있습니다 :'is_array $ shoppingCartContents)' – Jim

답변

3

그냥 그래서 코드에서 array_pop()

$last_array_element = array_pop($shoppingCartContents); 
// $shoppingCartContents now has last item removed 

를 사용

if (is_array($shoppingCartContents)) { 
    array_pop($shoppingCartContents); // you don't care about last items, so no need to keep it's value in memory 
} 
+0

완벽하게 작동했습니다. 회신에 감사드립니다. – Twobears

0
당신은 키가 아닌 숫자 문자열을 사용하고 같은 코드가 실패합니다

, 그래서 비교

if($v[1] === 999999)

은 절대로 일치하지 않으므로 $v['productId']을 확인해야합니다. 사용 사례를 들어

, 오히려 배열을 통해 반복보다, 당신은 단지 마지막 항목을 팝업 할 수

array_pop($shoppingCartContents); 

array_pop 배열에서 마지막 항목을 제거합니다. 마지막 항목을 반환하지만 마지막 항목을 유지하지 않으므로 반환 값을 저장하지 않습니다.

또는 unset을 계속 사용하려는 경우 get the last key 수 있습니다. 그런 다음이를 사용하여 설정을 취소하십시오.

마지막으로 실제 목록 (예 : 연속적인 숫자 색인)이있는 것 같아서 unset($shoppingCartContents[count($shoppingCartContents)-1])과 같은 것으로 빠져 나올 수 있습니다.

모든 것이 말하자면, array_pop이 최선의 방법입니다.