据我了解,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);
但是,这只会导致每个字母数组只有一个值。下面是一个例子,在“A”类别下,只有一个值(麻醉学)而不是两个(替代医学和麻醉学)。
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版本一样?感谢所有给予的帮助!谢谢!
答案 0 :(得分:3)
5.4中的短数组语法为introduced。但你误解了。对于文字声明,这支持[]
而不是array()
语法。
然而,语法
$array[$index][] = $someVar;
与短数组语法无关。自PHP开始以来它一直有效。您也可以在旧版本中使用此语法。
当代码更改为
时$sortedMainCatArray[$letter] = array($eachMainCategory);
它基本上表示不要在主数组的$ letter索引处创建子数组(对此行的多次调用会导致子数组中的多个元素),但会将array($eachMainCategory)
分配给该索引(多次调用此行多次为该索引分配相同的数组)。总结一下,离开
$sortedMainCatArray[$letter][] = $eachMainCategory;
两个PHP版本的都可以。
<强>更新强>
当函数返回该数组时,在特定索引处访问数组元素称为array dereferencing support
,并且还在5.4中添加,因此functionThatReturnsArray()[$index]
允许的一个内联只能在PHP中的两个表达式(行),如PHP manual examples部分所示:
// on PHP 5.4
$secondElement = getArray()[1];
// previously
$tmp = getArray();
$secondElement = $tmp[1];
答案 1 :(得分:1)
您应该可以使用array_push():
array_push($sortedMainCatArray[$letter], $eachMainCategory);