There is an array of the form:

array:4 [▼ 0 => array:7 [▼ "answer_schema_id" => "1" "content" => "odpowiedz 1" "locale" => "pl" "points" => "3" "answerKey" => "1" "answerElementOrder" => "1" "image" => "5cd143beba821203428009.jpg" ] 1 => array:7 [▼ "answer_schema_id" => "1" "content" => "answer 1" "locale" => "en" "points" => "3" "answerKey" => "1" "answerElementOrder" => "1" "image" => "5cd143beba821203428009.jpg" ] 2 => array:7 [▼ "answer_schema_id" => "2" "content" => "answer 2" "locale" => "en" "points" => "2" "answerKey" => "2" "answerElementOrder" => "2" "image" => "5cd143bebcdfc405126844.jpg" ] 3 => array:7 [▼ "answer_schema_id" => "2" "content" => "odpowiedz 2" "locale" => "pl" "points" => "2" "answerKey" => "2" "answerElementOrder" => "2" "image" => "5cd143bebcdfc405126844.jpg" ] ] 

You need to get the following array:

 array:4 [▼ 0 => array:7 [▼ "answer_schema_id" => "1" "content" => [ "pl" => 'odpowiedz 1', "en" => 'answer 1' ] "points" => "3" "answerKey" => "1" "answerElementOrder" => "1" "image" => "5cd143beba821203428009.jpg" ], 1 => array:7 [▼ "answer_schema_id" => "2" "content" => [ "pl" => 'odpowiedz 2', "en" => 'answer 2' ] "points" => "2" "answerKey" => "2" "answerElementOrder" => "2" "image" => "5cd143bebcdfc405126844.jpg" ] ] 

But this is how I get an array with only 1m key. Here is my code:

 $new = []; foreach ($data as $key => $datum){ if(empty($new)){ $new[] = $datum; unset($new[0]['content']); } foreach ($new as $keyz => $item){ if($item['answer_schema_id'] == $datum['answer_schema_id']){ $new[$keyz]['content'][$datum['locale']] = $datum['content']; } } } 

I ask for help in solving this problem.

    2 answers 2

    It seems to be something like this:

     // Исходный массив $srcArray = [ 0 => [ "answer_schema_id" => "1", "content" => "odpowiedz 1", "locale" => "pl", "points" => "3", "answerKey" => "1", "answerElementOrder" => "1", "image" => "5cd143beba821203428009.jpg", ], 1 => [ "answer_schema_id" => "1", "content" => "answer 1", "locale" => "en", "points" => "3", "answerKey" => "1", "answerElementOrder" => "1", "image" => "5cd143beba821203428009.jpg", ], 2 => [ "answer_schema_id" => "2", "content" => "answer 2", "locale" => "en", "points" => "2", "answerKey" => "2", "answerElementOrder" => "2", "image" => "5cd143bebcdfc405126844.jpg", ], 3 => [ "answer_schema_id" => "2", "content" => "odpowiedz 2", "locale" => "pl", "points" => "2", "answerKey" => "2", "answerElementOrder" => "2", "image" => "5cd143bebcdfc405126844.jpg", ] ]; // Результат $result = []; // Группировка foreach ($srcArray as $item) { if(empty($result[$item['answer_schema_id']])) { $result[$item['answer_schema_id']] = [ "answer_schema_id" => $item['answer_schema_id'], "content" => [ $item['locale'] => $item['content'], ], "points" => $item['points'], "answerKey" => $item['answerKey'], "answerElementOrder" => $item['answerElementOrder'], "image" => $item['image'], ]; }else{ $result[$item['answer_schema_id']]['content'][$item['locale']] = $item['content']; } } $result = array_values($result); 
    • Thank you, everything works - TeaMan

    In theory, you can somehow like that. Not the most beautiful solution, but one cycle, and no extra. conditions

      $result = []; foreach ($arr as $data) { $result[$data['answer_schema_id']]['answer_schema_id'] = $data['answer_schema_id']; $result[$data['answer_schema_id']]['points'] = $data['points']; $result[$data['answer_schema_id']]['answerKey'] = $data['answerKey']; $result[$data['answer_schema_id']]['answerElementOrder'] = $data['answerElementOrder']; $result[$data['answer_schema_id']]['image'] = $data['image']; $result[$data['answer_schema_id']]['content'][$data['locale']] = $data['content']; }