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];
据我了解,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];