Добрый день, помогите разобраться, есть массив полученный из json_decode PHP: array(15) { [0]=> array(2) { ["name"]=> string(4) "name" ["value"]=> string(8) "круг" } [1]=> array(2) { ["name"]=> string(5) "ed_iz" ["value"]=> string(4) "кг" } [2]=> array(2) { ["name"]=> string(9) "quanitity" ["value"]=> string(2) "20" } [3]=> array(2) { ["name"]=> string(5) "prise" ["value"]=> string(4) "1500" } [4]=> array(2) { ["name"]=> string(3) "nds" ["value"]=> string(3) "20%" } [5]=> array(2) { ["name"]=> string(4) "name" ["value"]=> string(18) "двигатель" } [6]=> array(2) { ["name"]=> string(5) "ed_iz" ["value"]=> string(2) "т" } [7]=> array(2) { ["name"]=> string(9) "quanitity" ["value"]=> string(2) "20" } [8]=> array(2) { ["name"]=> string(5) "prise" ["value"]=> string(3) "150" } [9]=> array(2) { ["name"]=> string(3) "nds" ["value"]=> string(3) "20%" } [10]=> array(2) { ["name"]=> string(4) "name" ["value"]=> string(12) "полоса" } [11]=> array(2) { ["name"]=> string(5) "ed_iz" ["value"]=> string(2) "т" } [12]=> array(2) { ["name"]=> string(9) "quanitity" ["value"]=> string(3) "0,1" } [13]=> array(2) { ["name"]=> string(5) "prise" ["value"]=> string(5) "70000" } [14]=> array(2) { ["name"]=> string(3) "nds" ["value"]=> string(3) "20%" } } как его превратить в такой? PHP: array(5) { ["name"]=> string(12) "полоса" ["ed_iz"]=> string(2) "т" ["quanitity"]=> string(3) "0,1" ["prise"]=> string(5) "70000" ["nds"]=> string(3) "20%" } PHP: foreach($data as $keys =>$value){ $result[$value['name']] = $value['value']; } при разборе foreach получаю только последние данные. понимаю что он перезаписывает. но не совсем соображу как сделать так чтоб получить все данные.
перезаписывать должен только в том случае, если у разных записей значение поля "name" совпадает, а так-то верно всё.
Спасибо. Но я просто не совсем соображу как мне с ним дальше работать. Хочется чтото вроде этого получить. А инпутов от куда все это приходит может быть разное количество. PHP: array(4) { [0]=> array(2) { ["type"]=> string(1) "1" ["content"]=> string(5) "fasdf" } [1]=> array(2) { ["type"]=> string(1) "2" ["content"]=> string(5) "image" } [2]=> array(2) { ["type"]=> string(1) "1" ["content"]=> string(7) "heading" } [3]=> array(2) { ["type"]=> string(1) "2" ["content"]=> string(9) "what ever" } }
Так эт один и тот же. Не соображу как из первого массива в начале темы. Сделать так, чтоб он выглядел как пример сообщения чуть выше.
Согласен наверно неправильно начал. вот такой блок завернут в <form> HTML: <div class="kanban__item" draggable="true" > <div class="form" style="background: #f7f3f3; height: 40px;"> <div class="kanban__item-input" style="display: none;"></div> <input class="kanban__item-input" name="name" type="text" contenteditable="" style="" placeholder="Наименование"></input> <select class="kanban__item-input" name="ed_iz" style=""> <option value="">--Ед.изм--</option> <option value="кг">кг</option> <option value="т">т</option> <option value="метр">метр</option> </select> <input class="kanban__item-input" type="text" name="quanitity" contenteditable="" placeholder="Количество" style=""></input> <input class="kanban__item-input" type="text" name="prise" contenteditable="" style="" placeholder="Цена"></input> <div class="kanban__item-input" contenteditable="" style="width:14%; height: 44px;" placeholder="Сумма">Сумма</div> <select class="kanban__item-input" name="nds" style="width: 6.2%; height: 44px;"> <option value="1.2">--20%--</option> <option value=" ">без ндс</option> </select> <div class="kanban__item-input" contenteditable="" style="width:15%; height: 44px;" placeholder="Сумма">Сумма НДС</div> <div class="kanban__item-input" contenteditable="" style="width:15%; height: 44px;" placeholder="Сумма Ндс" >Всего с НДС</div> </div> </div> при нажатии на кнопку если надо добавляется еще один такой блок в форму. и если нажать на кнопку отправить вся эта очень длинная форма улетает в php. в формате 1 массива. так вот как их сгрупировать чтоб это было похоже на такой массив PHP: array(4) { [0]=> array(2) { ["type"]=> string(1) "1" ["content"]=> string(5) "fasdf" } [1]=> array(2) { ["type"]=> string(1) "2" ["content"]=> string(5) "image" } [2]=> array(2) { ["type"]=> string(1) "1" ["content"]=> string(7) "heading" } [3]=> array(2) { ["type"]=> string(1) "2" ["content"]=> string(9) "what ever" } }
Ниоткуда. Это просто визуальный пример массива. --- Добавлено --- PHP: array(4) { [0]=> array(2) { ["name"]=> string(1) "1" ["ed_iz"]=> string(5) "fasdf" и т.д.} [1]=> array(2) { ["name"]=> string(1) "2" ["ed_iz"]=> string(5) "image" и т.д. } [2]=> array(2) { ["name"]=> string(1) "1" ["ed_iz"]=> string(7) "heading" и т.д.} [3]=> array(2) { ["name"]=> string(1) "2" ["ed_iz"]=> string(9) "what ever" и т.д.} }
PHP: array ( 0 => array ( 'name' => 'name', 'value' => 'имя', ), 1 => array ( 'name' => 'ed_iz', 'value' => 'кг', ), 2 => array ( 'name' => 'quanitity', 'value' => 'кол-во', ), 3 => array ( 'name' => 'prise', 'value' => '1111', ), 4 => array ( 'name' => 'nds', 'value' => '1.2', ), 5 => array ( 'name' => 'name', 'value' => 'имя2', ), 6 => array ( 'name' => 'ed_iz', 'value' => 'т', ), 7 => array ( 'name' => 'quanitity', 'value' => 'кол-во', ), 8 => array ( 'name' => 'prise', 'value' => '222', ), 9 => array ( 'name' => 'nds', 'value' => '1.2', ), )
Код (Text): $result = array(); $current_key = ''; foreach($data as $value) { if($value['name'] == 'name') { $current_key = $value['value']; } $result[$current_key][$value['name']] = $value['value']; } print_r($result);