Цикл не работает с ассоциативным массивом Php

#php #arrays

#php #массивы

Вопрос:

Могу ли я внести многомерную ошибку в ассоциативный массив, прямо сейчас я получаю следующий результат

     Array
(
    [0] => Array
        (
            [id] => 1
            [minimum_marks] => 55
            [maximum_marks] => 65
        )

    [1] => Array
        (
            [id] => 2
            [minimum_marks] => 44
            [maximum_marks] => 70
         }
)
  

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

 Array
(
    [id] => 1
    [minimum_marks] => 55
    [maximum_marks] => 65
)
Array
(
    [id] => 2
    [minimum_marks] => 44
    [maximum_marks] => 70
)
  

Вот мой код, мой код не показывает только одну запись с циклом (код должен показывать все минимальные и максимальные метки), где я ошибаюсь?

$result = $query->result_array();

 $simpleArray = [];
foreach ($result as $skuArray) {
  $simpleArray['minimum_marks'] = $skuArray['minimum_marks'];
  $simpleArray['maximum_marks'] = $skuArray['maximum_marks'];
}

print_R($simpleArray);
  

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

1. В массиве не может быть дубликатов ключей. Я думаю, что вы их перезаписываете. Глядя на данные, разве у вас уже нет того, что вы ищете?

2. Зачем вам это нужно? Не могли бы вы подробнее рассказать?

3. вы пробовали array_column ? Или вы могли бы сделать $simpleArray['minimum_marks'][] = $skuArray['minimum_marks'];

4. Не могли бы вы объяснить, почему вы хотите преобразовать свой массив таким образом. Если вы уточните немного больше, мы сможем подсказать вам лучший способ достижения вашей цели.

Ответ №1:

Я не знаю, почему вы ожидаете такого вывода. Но мое предложение, если вы действительно этого хотите?

 $simpleArray = [];
foreach ($result as $skuArray) {
  $simpleArray['minimum_marks'] = $skuArray['minimum_marks'];
  $simpleArray['maximum_marks'] = $skuArray['maximum_marks'];
  print_R($simpleArray);
}

  

Выведите значение внутри цикла, чтобы оно не нажимало и не создавало множественный массив. каждый раз он будет перезаписываться. Но, пожалуйста, убедитесь, что, наконец, вы получите последнее значение массива только в simpleArray. Надеюсь, вы поняли!

Позвольте мне объяснить на примере. Если вы хотите отобразить метки в таблице, я предложу вам вернуться непосредственно, как показано ниже, вместо того, чтобы создавать переменную и извлекать ее снова.

 echo '<table>
<tr><th>Min Marks</th><th>Max Marks</th></tr>';
foreach ($result as $skuArray) {
  $minMarks = $skuArray['minimum_marks'];
  $maxMarks = $skuArray['maximum_marks'];
  echo '<tr><td>'.$minMarks.'</td><td>'.$minMarks.'</td></tr>';
}
echo '</table>';
  

Ответ №2:

Я действительно не понимаю, чего вы хотите.

Если вы хотите получить свой массив в двух разных переменных, вы можете попробовать это:

Используйте динамические переменные, имя переменной динамически генерируется в вашем цикле.

 foreach($result as $key => $_array){
   //$key is your inder of you multidimensional
   $name_variable = '_array_number_'.$key; //Name of the variable
   $$name_variable = $_array; //Instanciate dynamic variable
}

//You got now this two array
print_r($_array_number_0); 
print_r($_array_number_1); 
  

Но, пожалуйста, в следующий раз будьте более точны с тем, что вы ожидаете и зачем вам это нужно.

Кстати, что случилось с вашим кодом, так это то, что в первом цикле вы создаете экземпляры ‘minimum_marks’ и ‘maximum_marks’ в $_simple_array.

Но во втором цикле вы перезаписываете значения ‘minimum_marks’ и ‘maximum_marks’.