簡體   English   中英

PHP 5.3從對象getter訪問數組鍵

[英]PHP 5.3 accessing array key from object getter

我有一個Form對象$ form。 其中一個變量是Field對象,它表示所有字段並且是一個數組(例如$this->field['fieldname'] )。 getter是$form->fields()

要訪問特定的字段方法(例如,使其成為必需),我使用$form->fields()['fieldname'] ,它在帶有wamp的localhost上工作但在服務器上拋出此錯誤:

Parse error: syntax error, unexpected '[' in (...)

我在服務器上有PHP 5.3,因為我重新安裝了wamp而忘了將它改回5.3,wamp運行PHP 5.4。 所以我猜這是錯誤的原因。

如何通過PHP 5.3的數組鍵訪問返回數組的對象方法?

從PHP 5.4開始,可以進行數組解除引用,而不是5.3

PHP.net:

從PHP 5.4開始,可以直接對函數或方法調用的結果進行數組解除引用。 之前只能使用臨時變量。

問題中描述的數組解除引用是僅在PHP 5.4中添加的功能。 PHP 5.3無法做到這一點。

echo $form->fields()['fieldname']

因此,此代碼將在PHP 5.4及更高版本中運行。

為了在PHP 5.3中實現這一功能,您需要執行以下操作之一:

  1. 使用臨時變量:

     $temp = $form->fields() echo $temp['fieldname']; 
  2. 將fields數組輸出為對象屬性而不是方法:
    即......

     echo $form->fields['fieldname'] 

    ......完全有效。

  3. 或者,當然,您可以將服務器升級到PHP 5.4。 請記住,5.3將被宣布為相對較快的生命終止,現在5.5已經被釋放,所以你無論如何都要遲早升級; 也許這是你的提示? (並且不用擔心;從5.3到5.4的升級路徑非常簡單;除了被棄用的東西之外,沒有什么會真正破壞)

如上所述,陣列解除引用只能在5.4或更高版本中。 但您可以保存對象,然后訪問字段:

$fields=$form->fields();
$value=$fields['fieldname']
...

AFAIK沒有其他選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM