php удалить элемент из массива - PullRequest
1 голос
/ 30 марта 2012

Я использую cakephp 2.0, и у меня есть данные, которые я хочу очистить, структура массива ниже, как удалить элемент (quoteitem), где количество = ноль?работа;

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

структура вызываемого массива ($ this-> request-> 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] => 
                )     

        )

)

Ответы [ 2 ]

5 голосов
/ 30 марта 2012

Вы можете удалить его, используя ключи массива:

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]);
   }       
}

Обратите внимание, что это создаст пробелы в массиве (несуществующие индексы), обычно это не будет проблемой, но если это так, вы можете переиндексировать массив с помощью array_values().

1 голос
/ 30 марта 2012

Foreach делает копию, попробуйте это:

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]);
   }       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...