Насколько я понимаю, PHP версии 5.6 и выше поддерживает использование [] (квадратные скобки) для массива. У меня есть функциональный код:
$sortedMainCatArray[$letter][] = $eachMainCategory;
это хорошо работает на PHP версии 5.6. Что этот код, по сути, делает так, что он помещает значения массива в $ sortedMainCatArray с предустановленным ключом. (например, a / b / c) Результат выглядит примерно так при использовании print_r.
Array
(
[A] => Array
(
[0] => Array
(
[mainCatID] => 33
[mainCatDesc] => Alternative Medicine
[mainCatAddedDate] => 2017-12-18 10:35:31
[mainCatStatus] => active
)
[1] => Array
(
[mainCatID] => 32
[mainCatDesc] => Anesthesiology
[mainCatAddedDate] => 2017-12-18 10:29:48
[mainCatStatus] => active
)
)
[B] => Array
(
[0] => Array
(
[mainCatID] => 1
[mainCatDesc] => Blood & Infection
[mainCatAddedDate] => 2017-12-18 10:29:28
[mainCatStatus] => active
)
)
)
Однако, поскольку PHP версии 5.3 не поддерживает использование [] (квадратные скобки), я должен изменить свой код. Что у меня было:
$sortedMainCatArray[$letter] = array($eachMainCategory);
Однако это привело только к тому, что каждый алфавитный массив имел только одно значение. Пример можно увидеть ниже, где под категорией «А» есть только одно значение (анестезиология) вместо двух (альтернативная медицина). & Анестезиологии).
Array
(
[A] => Array
(
[0] => Array
(
[mainCatID] => 32
[mainCatDesc] => Anesthesiology
[mainCatAddedDate] => 2017-12-18 10:29:48
[mainCatStatus] => active
)
)
[B] => Array
(
[0] => Array
(
[mainCatID] => 1
[mainCatDesc] => Blood & Infection
[mainCatAddedDate] => 2017-12-18 10:29:28
[mainCatStatus] => active
)
)
)
Как еще я могу изменить свой код для работы на PHP версии 5.3, как он работал на версии 5.6 без использования скобок []? Ценю всю помощь, оказанную! Спасибо!
Синтаксис короткого массива был введены в 5.4. Но вы не поняли. Это поддерживает []
вместо array()
синтаксис для буквальный деклараций.
Тем не менее, синтаксис
$array[$index][] = $someVar;
не имеет ничего общего с синтаксисом короткого массива. Это действует с самого начала PHP. Вы можете использовать этот синтаксис и в более старой версии.
Когда код изменен на
$sortedMainCatArray[$letter] = array($eachMainCategory);
в основном это говорит о том, что не нужно создавать подмассив с индексом $ letter основного массива (несколько вызовов этой строки приводят к нескольким элементам в подмассиве), но назначают array($eachMainCategory)
этому индексу (несколько вызовов этой строки присваивают один и тот же массив этому индексу несколько раз). Подвести итоги, оставив
$sortedMainCatArray[$letter][] = $eachMainCategory;
для обеих версий PHP это нормально.
ОБНОВИТЬ
Доступ к элементу массива по определенному индексу, когда этот массив возвращается функцией, вызывается array dereferencing support
и был также добавлен в 5.4, так что один лайнер, разрешенный им functionThatReturnsArray()[$index]
может быть сделано только в двух выражениях (строках) в PHP до 5.4, как показано в Ручные примеры PHP раздел:
// on PHP 5.4
$secondElement = getArray()[1];
// previously
$tmp = getArray();
$secondElement = $tmp[1];
Вы должны быть в состоянии использовать array_push ():
array_push($sortedMainCatArray[$letter], $eachMainCategory);