php数组能不能静态,php 为什么常量可以用数组定义 静态变量却不能
<?php
$GLOBALS['arr'] = array(1=>1,2=>2);
define("ABC",$GLOBALS['arr'][1]); # 這個定義可以
class test{
static ?$a = $GLOBALS['arr'][1]; # 這個初始化有語法錯誤
}
類的變量成員叫做“屬性”,或者叫“字段”、“特征”,在本文檔統一稱為“屬性”。屬性聲明是由關鍵字 public,protected 或者 private 開頭,然后跟一個普通的變量聲明來組成。屬性中的變量可以初始化,但是初始化的值必須是常數,這里的常數是指 PHP 腳本在編譯階段時就可以得到其值,而不依賴于運行時的信息才能求值
http://php.net/manual/zh/lang…
static $a = ABC;
就像其它所有的 PHP 靜態變量一樣,靜態屬性只能被初始化為文字或常量,不能使用表達式。所以可以把靜態屬性初始化為整數或數組,但不能初始化為另一個變量或函數返回值,也不能指向一個對象。
http://php.net/manual/zh/lang…
只支持字面量
只能是字面上的常量,就是這個值在編譯階段就能確認而不是在運行階段才被確認。
評論里不能發圖片。所以寫成答案。
@TIGERB 的說法是錯誤的。靜態變量可以是數組。
@蘇生不惑 的答案是正確的。靜態變量不能引用其他變量。因為靜態變量在php解釋引擎加載這個類的時候,就已經會去給靜態變量賦值了。但是這個時候,這個靜態變量如果引用了其他變量,那個變量可能還沒初始化。所以PHP規定靜態變量的初始值不能為其他變量。
如圖:
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的php数组能不能静态,php 为什么常量可以用数组定义 静态变量却不能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt 在label上以光标位置进行缩放_
- 下一篇: 头部外伤指什么_什么是颅骨缺损?