㈠ 關於php當中static關鍵字,資料上說只能初始化一次。但是數組變數在定義時賦值會被下一次初始化覆蓋!
你定義了static 就是靜態變數
但是靜態變數的初始化只進行一次,而且是定義靜態變數的時候初始化
static $a = array(1,2,3);
print_r($a);
static $a = array();
這樣實際上是定義了兩次靜態變數,並初始化,實際做會執行其中一個
就是後面這個
上面的代碼實際上會被編譯器編程這樣
<?php
function f1(){
static $a = array();
print_r($a);
print_r($a);
}
function f2(){
static $a = array();
$a[] = 1;
$a[] = 2;
$a[] = 3;
print_r($a);
print_r($a);
}
㈡ php靜態屬性跟常量有什麼區別啊
類的靜態屬性. 會在類文件載入的時候, 就初始化.
屬性值是可以更改的.
常量...一旦定義了. 就無法變更值..
這應該算是最大區別.
另外, 常量只能是簡單的數據類型(如: int , string , boolean,float , double) ,
類的靜態屬性, 可以是php所支持的任意變數類型(但初始化的時候. 只能是簡單數據類型, 數組)
㈢ PHP類中給成員屬性初始化值為什麼報錯
PHP類中,若要初始化成員屬性,那麼成員屬性的初始值必須是一個常數,如果不是常數(如變數),則會報錯。
㈣ php中的initialize()方法是什麼意思麻煩大俠們幫一下忙!!!!!!!!!!
初始化函數,預載入時使用,有較高的運行優先順序
㈤ PHP新手的提問
看來你用的是YII框架, YII::app()是YII底層封裝好的方法,返回一個單例,在面向對象中,「::」 主要用來調用靜態方法;「->」 是一個對象實例訪問自己的屬性或方法;「=>」 在這裡面是數組的表示方法,即鍵值對。建議你如果是新手,不要一開始就看框架,基礎知識很重要
㈥ php中,初始化對象是什麼意思,實例化是什麼意思
初始化是在構造函數裡面完成的,一般對成員復制之類的操作;
實例化對象:new ClassName(),實例化的時候會自動初始化,即調用__construct()
㈦ php靜態數組
解決辦法一:
$newarr不要用靜態數組,而是在每次遞歸調用後把返回值(數組)與上一層的$newarr進行合並即可,這樣的話不管調用多少次,$newarr都不會保留上次的值
functionunless($arr,$fid=0){
$newarr=array();
foreach($arras$v){
if($v["pid"]==$fid){
$newarr[]=$v;
$newarr=array_merge($newarr,unless($arr,$v["did"]));
}
}
return$newarr;
}
解決辦法二:
如果參數$fid只有在首次運行(非遞歸)是為0,在遞歸調用時都不是0,那麼可以根據這個在首次運行時重新初始化$newarr,這樣在外部多次調用這個函數都不會保留上次的值
functionunless($arr,$fid=0){
static$newarr=array();
if($fid==0)$newarr=array();
foreach($arras$v){
if($v["pid"]==$fid){
$newarr[]=$v;
unless($arr,$v["did"]);
}
}
return$newarr;
}
如果在遞歸的時候$fid仍然有可能是0,那麼可以新增加一個參數,用來標記是否首次運行:
functionunless($arr,$fid=0,$x=0){
static$newarr=array();
if($x==0)$newarr=array();
foreach($arras$v){
if($v["pid"]==$fid){
$newarr[]=$v;
unless($arr,$v["did"],1);
}
}
return$newarr;
}
㈧ php中static 靜態變數和普通變數的區別
php中static 靜態變數和普通變數的區別:
在變數的前面加上static 就構成了靜態變數(static 變數)。
static變數和普通變數的區別在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。 而靜態全局變數則限制了其作用域, 即只在定義該變數的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。
㈨ php靜態數組成員為什麼總是被初始化 不能使用靜態成員存儲全站共享的信息么
在PHP里類本身 只有在一個頁面(包括include文件)里存在的 ,所有成員屬性都一樣
只要你換頁面 或者重新打開 那都會重置的。
所謂靜態是 在一個頁面 多次調用的時候 才能有效保存。
你要實現訪問網站的所有訪客的ip ,
最有效方法 是 存儲在 資料庫當中 這樣才能保證不會 丟失
---------------------------
你只要進行了刷新頁面 所有變數會被 清除 在重新生成。
短時間存儲的 話 內存當然是最有效的。
但是需要伺服器配置 才可以使用
比如 Memcache擴展 就是利用內存進行緩存的。
網上有很多資料 你可以搜一下