2012-03-30 11 views
1

Ich benutze CakePHP 2.0 und ich habe Daten eingereicht, die ich bereinigen möchte, ist die Array-Struktur unter wie lösche ich das Element (Zitat), wo die Menge = null?php delete Element aus Array

ich habe das, aber es funktioniert nicht;

foreach($this->request->data['Quoteitem'] as $qi) { 
if($qi['quantity']==null){ 
echo 'quantity is null,delete this quote item from array';     
unset($qi); 
}  
} 

Struktur des Array genannt ($ this-> Anfrage-> data)

Array 
(
    [Quote] => Array 
     (
      [customer_id] => 72 
      [user_id] => 104     
     ) 

    [Range] => Array 
     (
      [id] => 
     ) 

    [Quoteitem] => Array 
     (
      [0] => Array 
       (
        [product_id] => 
        [unitcost] => 
        [quantity] => 1 
       ) 

      [1] => Array 
       (
        [product_id] => 
        [unitcost] => 
        [quantity] => 22 
       ) 

      [2] => Array 
       (
        [product_id] => 339 
        [unitcost] => 5 
        [quantity] => 
       )  

     ) 

) 

Antwort

5

Sie können es entfernen Sie die Array-Tasten:

foreach($this->request->data['Quoteitem'] as $key => $qi) { 
    if($qi['quantity'] == null){ 
     echo 'quantity is null,delete this quote item from array';     
     unset($this->request->data['Quoteitem'][$key]); 
    }  
} 

Beachten Sie, dass diese Lücken schaffen Im Array (nicht vorhandene Indizes) ist dies normalerweise kein Problem, aber wenn dies der Fall ist, können Sie das Array mit array_values() neu indizieren.

+0

haha, Gewinner. genaue Lösung ich tippte: x –

+0

danke, verdammt, ich war in der Nähe :) –

1

Foreach eine Kopie macht, versuchen Sie dies:

foreach($this->request->data['Quoteitem'] as $key => $qi) { 
    if($qi['quantity']==null){ 
     echo 'quantity is null,delete this quote item from array';     
     unset($this->request->data['Quoteitem'][$key]); 
    }  
}