PHP: форматирование массива

#php

#php

Вопрос:

У меня есть массив с дублированными номерами мобильных телефонов с соответствующими значениями, я хочу объединить эти номера мобильных телефонов и с соответствующими объектами

и вот фактический синтаксис, который я сделал

  foreach($char2['flowers_details'] as $flowers){
      foreach($array as $flowersd){
        if (in_array($flowers['flower_id'], $flowersd['flower_id'])){
          $details[] =  array('mobile'=>$flowersd['mobile'],'flower_name'=>$flowers['flower_name'],'flower_price'=>$flowers['flower_price']);
        }
    }
  }
 echo json_encode($details);
  

Вот ответ

 [
{
    "mobile": "7799124599",
    "flower_name": "Merabel  ",
    "flower_price": "20"
},
{
    "mobile": "8008118599",
    "flower_name": "Merabel  ",
    "flower_price": "20"
},
{
    "mobile": "8008118599",
    "flower_name": "San maggi ",
    "flower_price": "10"
},
{
    "mobile": "7799124599",
    "flower_name": "Mango yellow  ",
    "flower_price": "50"
}]
  

это не идеальный формат
, и я пробовал этот синтаксис, хотя я не получаю точный форматированный массив

 foreach($char2['flowers_details'] as $flowers){
      foreach($array as $flowersd){
          $mobile =  array('mobile'=>$flowersd['mobile']);    
        if (in_array($flowers['flower_id'], $flowersd['flower_id'])){
          $detail[] =  array('flower_name'=>$flowers['flower_name'],'flower_price'=>$flowers['flower_price']);
        }
        $details = array_merge($mobile,$detail);
    }
  }
echo json_encode($detail);
  

Итак, каким образом я должен написать синтаксис, чтобы получить идеальный формат массива
с отображением одного числа и других следующих значений

Фактический формат, который я тоже хочу показать, это

 [
    [
        {
            "mobile": "7799124599"
        },
        {
            "flower_name": "Merabel  ",
            "flower_price": "20"
        },
        {
            "flower_name": "Mango yellow  ",
            "flower_price": "50"
        }
    ],
    [
        {
            "mobile": "8008118599"
        },
        {
            "flower_name": "Merabel  ",
            "flower_price": "20"
        },
        {
            "flower_name": "San maggi ",
            "flower_price": "10"
        }
    ]
]
  

Спасибо

Комментарии:

1. Можете ли вы показать нам идеальный формат вашего выходного массива?

2. Было бы полезно, если бы вы рассказали / показали нам, какой, по вашему мнению, идеальный формат , а также показали, как выглядит входной массив, если сможете

Ответ №1:

Вы должны изменить свой код назначения, как показано ниже:-

 $details[$flowersd['mobile']][] =  array('mobile'=>$flowersd['mobile'],'flower_name'=>$flowers['flower_name'],'flower_price'=>$flowers['flower_price']);
  

Приведенный выше код создаст номера мобильных телефонов в качестве ключей, поэтому, если вы этого не хотите, сделайте это раньше json_encode() :-

 $details = array_values($details); //will re-indexed array keys to 0,1,2,....