[英]PHP Version 5.3 vs Version 5.6 and above
据我了解,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
)
)
)
在不使用[]括号的情况下,如何才能修改我的代码以使其在5.3版的PHP上工作呢? 感谢所有给予的帮助! 谢谢!
短数组语法在5.4中引入 。 但是你误会了。 对于文字声明,此方法支持[]
而不是array()
语法。
但是,语法
$array[$index][] = $someVar;
与短数组语法无关。 自PHP诞生以来,它一直有效。 您也可以在旧版本中使用此语法。
当代码更改为
$sortedMainCatArray[$letter] = array($eachMainCategory);
它基本上说不要在主数组的$ letter索引处创建子数组(多次调用此行会导致子array($eachMainCategory)
中有多个元素),而是将array($eachMainCategory)
分配给该索引(多次调用此行assign同一数组多次指向该索引)。 总结一下,离开
$sortedMainCatArray[$letter][] = $eachMainCategory;
对于两个PHP版本都可以。
更新
当函数返回某个数组时,在特定索引处访问数组元素称为array dereferencing support
并且在5.4中也添加了该数组元素,因此该functionThatReturnsArray()[$index]
允许的一个内衬functionThatReturnsArray()[$index]
只能在两个表达式中完成(在5.4之前的PHP版本中,如PHP手册示例部分所示:
// on PHP 5.4
$secondElement = getArray()[1];
// previously
$tmp = getArray();
$secondElement = $tmp[1];
您应该能够使用array_push() :
array_push($sortedMainCatArray[$letter], $eachMainCategory);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.