簡體   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