matrix — Добавление элемента в многомерный массив в Stack Overflow

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

Вот пример того, что я хочу:

$courses_by_code = [[2/11]=>[course1],[course2]], [[3/12]=>[course3], [course4]]

Итак, мои вопросы:

Как добавить элемент с ключом, который уже находится в матрице, в массив, соответствующий этому ключу?

Как мне создать новую строку в матрице, если я найду новый ключ?

1

Решение

Я не уверен, что понял 100%, но из того, что я понял, вы должны сделать что-то вроде:

$keyThatMightExist // '2/11' for example
if(isset($courses_by_code[$keyThatMightExist])) {
$courses_by_code[$keyThatMightExist][] = $newCourseToAdd;
} else {
$courses_by_code[$keyThatMightExist] = array($newCourseToAdd);
}
3

Другие решения

Давайте начнем с PHP Массивы документация:

Массив в PHP на самом деле является упорядоченной картой. Карта — это тип, который связывает значения с ключами.

То, что будет иметь неоценимое значение при работе с массивами, — это print_r функция. var_dump тоже полезно. Вы сможете увидеть структуру массива как хранящуюся в PHP. Вот некоторые полезные вещи, которые нужно знать с массивами.

Давайте ответим на некоторые вопросы сейчас:

Как добавить элемент с ключом, который уже находится в матрице, в массив, соответствующий этому ключу? Как мне создать новую строку в матрице, если я найду новый ключ?

$courses = []; // initialize
$courses['2/11'][] = 'course1';
$courses['2/11'][] = 'course2';
$courses['3/12'][] = 'course3';
$courses['3/12'][] = 'course4';

Пустой [] Вы видите, указывает, что я добавляю больше элементов к ключу 2/11, Если бы я хотел, я мог бы также назвать эти ключи, но я не собираюсь этого делать. С помощью print_r (описано выше) Теперь я распечатаю массив в удобочитаемом формате. Обратите внимание, что с print_r вы обычно хотите окружить вывод <pre> теги как таковые:

echo "<pre>";
print_r($courses);
echo "</pre>";

И вот мой вывод:

Array
(
[2/11] => Array
(
[0] => course1
[1] => course2
)

[3/12] => Array
(
[0] => course3
[1] => course4
)

)

Вот как я могу получить доступ к этим элементам:

echo $courses['2/11'][1]; // this is course2
echo "<br>";
print_r($courses['3/12']);    // this is the entire '3/12' array

Результат:

course2
Array
(
[0] => course3
[1] => course4
)
1

По вопросам рекламы [email protected]