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" 类别下,只有一个值 (Anesthesiology) 而不是两个 (Alternative Medicine & Anesthesiology)。

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 上工作一样?感谢所有提供的帮助!谢谢!

您应该可以使用 array_push():

array_push($sortedMainCatArray[$letter], $eachMainCategory);

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]只能是在 5.4 之前的 PHP 中用两个表达式(行)完成,如 PHP manual examples 部分所示:

// on PHP 5.4 
$secondElement = getArray()[1];

// previously  
$tmp = getArray();
$secondElement = $tmp[1];