很多站长朋友们都不太清楚php静态数组变量,今天小编就来给大家整理php静态数组变量,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php 为什么常量可以用数组定义 静态变量却不能 2、 php静态数组 3、 php中如何声明一个静态数组 4、 php static 数组能否重写?赋值 php 为什么常量可以用数组定义 静态变量却不能类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 public,protected 或者 private 开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指 PHP 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值
static $a = ABC;
就像其它所有的 PHP 静态变量一样,静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象。
php静态数组解决办法一:
$newarr不要用静态数组,而是在每次递归调用后把返回值(数组)与上一层的$newarr进行合并即可,这样的话不管调用多少次,$newarr都不会保留上次的值
function unless($arr, $fid = 0){
$newarr=array();
foreach ($arr as $v){
if ($v["pid"] == $fid){
$newarr[] = $v;
$newarr=array_merge($newarr,unless($arr, $v["did"]));
}
}
return $newarr;
}
解决办法二:
如果参数$fid只有在首次运行(非递归)是为0,在递归调用时都不是0,那么可以根据这个在首次运行时重新初始化$newarr,这样在外部多次调用这个函数都不会保留上次的值
function unless($arr, $fid = 0){
static $newarr=array();
if($fid==0)$newarr=array();
foreach ($arr as $v){
if ($v["pid"] == $fid){
$newarr[] = $v;
unless($arr, $v["did"]);
}
}
return $newarr;
}
如果在递归的时候$fid仍然有可能是0,那么可以新增加一个参数,用来标记是否首次运行:
function unless($arr, $fid = 0, $x=0){
static $newarr=array();
if($x==0)$newarr=array();
foreach ($arr as $v){
if ($v["pid"] == $fid){
$newarr[] = $v;
unless($arr, $v["did"], 1);
}
}
return $newarr;
}
php中如何声明一个静态数组//可读可写方式(推荐)
class testarray{
public static $arr = array();
}
testarray::$arr['key1'] = 'value1';
testarray::$arr['key2'] = 'value2';
print_r(testarray::$arr);
//define只读方式
$array = array(1,2,3,4,5);
define('STATIC_ARRAY', serialize($array));
print_r(unserialize(STATIC_ARRAY));
php static 数组能否重写?赋值public static $SKILL_ARRAY = array("专业知识","素质能力");
因为是public,所以可以修改的
className::$SKILL_ARRAY = array("php","php");
关于php静态数组变量的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php静态数组变量 php定义静态变量的详细内容...