Я перебираю массив курсов, каждый из которых содержит идентификаторы категорий в виде строк. Я пытаюсь сгруппировать их по категориям, используя матрицу, но у меня возникают проблемы с этим.
Вот пример того, что я хочу:
$courses_by_code = [[2/11]=>[course1],[course2]], [[3/12]=>[course3], [course4]]
Итак, мои вопросы:
Как добавить элемент с ключом, который уже находится в матрице, в массив, соответствующий этому ключу?
Как мне создать новую строку в матрице, если я найду новый ключ?
Я не уверен, что понял 100%, но из того, что я понял, вы должны сделать что-то вроде:
$keyThatMightExist // '2/11' for example
if(isset($courses_by_code[$keyThatMightExist])) {
$courses_by_code[$keyThatMightExist][] = $newCourseToAdd;
} else {
$courses_by_code[$keyThatMightExist] = array($newCourseToAdd);
}
Давайте начнем с 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
)