#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’.