Разбор массива

Добрый день, помогите разобраться, есть массив полученный из
json_decode

PHP:
  1. array(15) {
  2.   [0]=>
  3.   array(2) {
  4.     [«name»]=>
  5.     string(4) «name»
  6.     [«value»]=>
  7.     string(8) «круг»
  8.   }
  9.   [1]=>
  10.   array(2) {
  11.     [«name»]=>
  12.     string(5) «ed_iz»
  13.     [«value»]=>
  14.     string(4) «кг»
  15.   }
  16.   [2]=>
  17.   array(2) {
  18.     [«name»]=>
  19.     string(9) «quanitity»
  20.     [«value»]=>
  21.     string(2) «20»
  22.   }
  23.   [3]=>
  24.   array(2) {
  25.     [«name»]=>
  26.     string(5) «prise»
  27.     [«value»]=>
  28.     string(4) «1500»
  29.   }
  30.   [4]=>
  31.   array(2) {
  32.     [«name»]=>
  33.     string(3) «nds»
  34.     [«value»]=>
  35.     string(3) «20%»
  36.   }
  37.   [5]=>
  38.   array(2) {
  39.     [«name»]=>
  40.     string(4) «name»
  41.     [«value»]=>
  42.     string(18) «двигатель»
  43.   }
  44.   [6]=>
  45.   array(2) {
  46.     [«name»]=>
  47.     string(5) «ed_iz»
  48.     [«value»]=>
  49.     string(2) «т»
  50.   }
  51.   [7]=>
  52.   array(2) {
  53.     [«name»]=>
  54.     string(9) «quanitity»
  55.     [«value»]=>
  56.     string(2) «20»
  57.   }
  58.   [8]=>
  59.   array(2) {
  60.     [«name»]=>
  61.     string(5) «prise»
  62.     [«value»]=>
  63.     string(3) «150»
  64.   }
  65.   [9]=>
  66.   array(2) {
  67.     [«name»]=>
  68.     string(3) «nds»
  69.     [«value»]=>
  70.     string(3) «20%»
  71.   }
  72.   [10]=>
  73.   array(2) {
  74.     [«name»]=>
  75.     string(4) «name»
  76.     [«value»]=>
  77.     string(12) «полоса»
  78.   }
  79.   [11]=>
  80.   array(2) {
  81.     [«name»]=>
  82.     string(5) «ed_iz»
  83.     [«value»]=>
  84.     string(2) «т»
  85.   }
  86.   [12]=>
  87.   array(2) {
  88.     [«name»]=>
  89.     string(9) «quanitity»
  90.     [«value»]=>
  91.     string(3) «0,1»
  92.   }
  93.   [13]=>
  94.   array(2) {
  95.     [«name»]=>
  96.     string(5) «prise»
  97.     [«value»]=>
  98.     string(5) «70000»
  99.   }
  100.   [14]=>
  101.   array(2) {
  102.     [«name»]=>
  103.     string(3) «nds»
  104.     [«value»]=>
  105.     string(3) «20%»
  106.   }
  107. }

как его превратить в такой?

PHP:
  1. array(5) {
  2.   [«name»]=>
  3.   string(12) «полоса»
  4.   [«ed_iz»]=>
  5.   string(2) «т»
  6.   [«quanitity»]=>
  7.   string(3) «0,1»
  8.   [«prise»]=>
  9.   string(5) «70000»
  10.   [«nds»]=>
  11.   string(3) «20%»
  12. }
PHP:
  1. foreach($data as $keys =>$value){
  2.    
  3.      $result[$value[‘name’]] = $value[‘value’];
  4.    
  5.    
  6. }

при разборе foreach получаю только последние данные. понимаю что он перезаписывает. но не совсем соображу как сделать так чтоб получить все данные.

 

перезаписывать должен только в том случае, если у разных записей значение поля «name» совпадает, а так-то верно всё.

 

Спасибо. Но я просто не совсем соображу как мне с ним дальше работать. Хочется чтото вроде этого получить. А инпутов от куда все это приходит может быть разное количество.

PHP:
  1. array(4) {
  2.    [0]=> array(2) { [«type»]=> string(1) «1» [«content»]=> string(5) «fasdf» }
  3.    [1]=> array(2) { [«type»]=> string(1) «2» [«content»]=> string(5) «image» }
  4.    [2]=> array(2) { [«type»]=> string(1) «1» [«content»]=> string(7) «heading» }
  5.    [3]=> array(2) { [«type»]=> string(1) «2» [«content»]=> string(9) «what ever» }
  6. }
 

@Дато, какое отношение последний вопрос имеет к первому?

 

Так эт один и тот же. Не соображу как из первого массива в начале темы. Сделать так, чтоб он выглядел как пример сообщения чуть выше.

 

из первого последний никак, либо ты что-то скрываешь от нас )))

 

Согласен наверно неправильно начал. вот такой блок завернут в <form>

HTML:
  1. <div class=«kanban__item» draggable=«true» >
  2.                 <div class=«form» style=«background: #f7f3f3; height: 40px;»>
  3.                     <div class=«kanban__item-input» style=«display: none;»></div>
  4.                     <input class=«kanban__item-input» name=«name» type=«text» contenteditable=«» style=«» placeholder=«Наименование»></input>
  5.                     <select class=«kanban__item-input»  name=«ed_iz» style=«»>
  6.                     <option value=«»>—Ед.изм—</option>
  7.                     <option value=«кг»>кг</option>
  8.                     <option value=«т»>т</option>
  9.                     <option value=«метр»>метр</option>
  10.                     </select>
  11.                     <input class=«kanban__item-input» type=«text»  name=«quanitity» contenteditable=«» placeholder=«Количество» style=«»></input>
  12.                     <input class=«kanban__item-input» type=«text» name=«prise» contenteditable=«» style=«» placeholder=«Цена»></input>
  13.                     <div class=«kanban__item-input» contenteditable=«» style=«width:14%; height: 44px;» placeholder=«Сумма»>Сумма</div>
  14.                     <select class=«kanban__item-input» name=«nds» style=«width: 6.2%; height: 44px;»>
  15.                     <option value=«1.2»>—20%—</option>
  16.                     <option value=» «>без ндс</option>
  17.                     </select>
  18.                     <div class=«kanban__item-input» contenteditable=«» style=«width:15%; height: 44px;» placeholder=«Сумма»>Сумма НДС</div>
  19.                     <div class=«kanban__item-input» contenteditable=«» style=«width:15%; height: 44px;» placeholder=«Сумма Ндс» >Всего с НДС</div>
  20.                 </div>
  21.             </div>

при нажатии на кнопку если надо добавляется еще один такой блок в форму. и если нажать на кнопку отправить вся эта очень длинная форма улетает в php. в формате 1 массива. так вот как их сгрупировать чтоб это было похоже на такой массив

PHP:
  1. array(4) {
  2.    [0]=> array(2) { [«type»]=> string(1) «1» [«content»]=> string(5) «fasdf» }
  3.    [1]=> array(2) { [«type»]=> string(1) «2» [«content»]=> string(5) «image» }
  4.    [2]=> array(2) { [«type»]=> string(1) «1» [«content»]=> string(7) «heading» }
  5.    [3]=> array(2) { [«type»]=> string(1) «2» [«content»]=> string(9) «what ever» }
  6. }
 

и откуда в результирующем массиве «type» взяться должен?

 

Ниоткуда. Это просто визуальный пример массива.
— Добавлено —

PHP:
  1. array(4) {
  2.    [0]=> array(2) { [«name»]=> string(1) «1» [«ed_iz»]=> string(5) «fasdf»  и т.д.}
  3.    [1]=> array(2) { [«name»]=> string(1) «2» [«ed_iz»]=> string(5) «image»  и т.д. }
  4.    [2]=> array(2) { [«name»]=> string(1) «1» [«ed_iz»]=> string(7) «heading»  и т.д.}
  5.    [3]=> array(2) { [«name»]=> string(1) «2» [«ed_iz»]=> string(9) «what ever»  и т.д.}
  6. }
 

ну, на абстрактный вопрос можно получить максимум абстрактный ответ

 

почему абстрактный? Только ключи смутили? Так я исправил.

 

Очень не хватает вывода PHP: var_export — Manual вместо var_dump.

 

PHP:
  1.   0 =>
  2.   array (
  3.     ‘name’ => ‘name’,
  4.     ‘value’ => ‘имя’,
  5.   ),
  6.   1 =>
  7.   array (
  8.     ‘name’ => ‘ed_iz’,
  9.     ‘value’ => ‘кг’,
  10.   ),
  11.   2 =>
  12.   array (
  13.     ‘name’ => ‘quanitity’,
  14.     ‘value’ => ‘кол-во’,
  15.   ),
  16.   3 =>
  17.   array (
  18.     ‘name’ => ‘prise’,
  19.     ‘value’ => ‘1111’,
  20.   ),
  21.   4 =>
  22.   array (
  23.     ‘name’ => ‘nds’,
  24.     ‘value’ => ‘1.2’,
  25.   ),
  26.   5 =>
  27.   array (
  28.     ‘name’ => ‘name’,
  29.     ‘value’ => ‘имя2’,
  30.   ),
  31.   6 =>
  32.   array (
  33.     ‘name’ => ‘ed_iz’,
  34.     ‘value’ => ‘т’,
  35.   ),
  36.   7 =>
  37.   array (
  38.     ‘name’ => ‘quanitity’,
  39.     ‘value’ => ‘кол-во’,
  40.   ),
  41.   8 =>
  42.   array (
  43.     ‘name’ => ‘prise’,
  44.     ‘value’ => ‘222’,
  45.   ),
  46.   9 =>
  47.   array (
  48.     ‘name’ => ‘nds’,
  49.     ‘value’ => ‘1.2’,
  50.   ),
  51. )
 

Код (Text):
  1. $result      = array();
  2. $current_key = »;
  3.  
  4. foreach($data as $value)
  5. {
  6.     if($value[‘name’] == ‘name’)
  7.     {
  8.         $current_key = $value[‘value’];
  9.     }
  10.  
  11.     $result[$current_key][$value[‘name’]] = $value[‘value’];
  12. }
  13.  
  14. print_r($result);
 

Спасибо)

 

Если name не уникален, то в $current_key следует вставить счетчик

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *