繁体   English   中英

PHP版本5.3与版本5.6及更高版本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM