PHP разделить массив через [имя] на группы для сохранения в MySQL - PullRequest
0 голосов
/ 15 декабря 2010

вывод через print_r в php из jquery.serilizeArray ()

Array ( 
     [pnr_item_2] => 2 
     [pkt_item_2] => Hosting L 
     [desc_item_2] => Domain + Hosting 
     [qty_item_2] => 9 
     [price_item_2] => 12.4 
     [pnr_item_1] => 1 
     [pkt_item_1] => HostingXXL 
     [desc_item_1] => 20GB, 1x.de 
     [qty_item_1] => 2 
     [price_item_1] => 15.5 
     [pnr_item_3] => 3 
     [pkt_item_3] => Domain 
     [desc_item_3] => Standarddomain 
     [qty_item_3] => 6 
     [price_item_3] => 5 
     [pnr_item_4] => 3 
     [pkt_item_4] => Domain 
     [desc_item_4] => Standarddomain 
     [qty_item_4] => 7 
     [price_item_4] => 5 
     [action] => save 
     [mysql] => update 
     [total] => 351.1 
)

Существует ли возможность разбить массив на группы с помощью номера _item_##? Я хочу сохранить элементы в моей первой таблице MySQL, действие - это функция executet, которую я получаю через $_POST[action], а [total] нужно сохранить в дополнительной (2-й) MySQL-таблице.

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Основано на моем предположении о значении вопроса;)

//$yourArr = array(all,your,input);

$action = $yourArr['action'];
$mysql = $yourArr['mysql'];
$total = $yourArr['total'];
unset( $yourArr['action'] , $yourArr['mysql'] , $yourArr['total'] );

foreach ($yourArr as $k => $v) {
  list($type,$num) = explode('_item_',$k);
  $items[$num][$type] = $v;
}

Чем у вас есть, например:

$items = array(
  [2]['pnr'] => 2, 
  [2]['pkt'] => 'Hosting L',
  [2][['desc_item'] => 'Domain + Hosting'
  ...
  );

отказ от ответственности: я на самом деле не проверял это

0 голосов
/ 15 декабря 2010

Вы можете выполнить цикл по массиву:

$items = array();
foreach($array as $key=>$value) {
    if(stripos($key, '_item_' !== false)) {
        $items[$key] = $value;
        unset($array[$key]);
    }
}

Тогда $items содержит все элементы, которые имеют _item_ в ключе, а $array остальные.

Но проще будетсначала сохранить total и удалить из массива action, mysql и total.Так что просто поменять обе операции.

...