php变量初始化
‘壹’ php中判断变量为空的几种方法
if (isset($obj)) {
echo "This var is set set so I will print.";
}
isset函数是检测变量是否设置。
格式:bool isset ( mixed var [, mixed var [, ...]] )
返回值:
若变量不存在则返回 FALSE
若变量存在且其值为NULL,也返回 FALSE
若变量存在且值不为NULL,则返回 TURE
同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节(”\0″)并不等同于 PHP 的 NULL 常数。
警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。
‘贰’ php求助 static修饰的变量不是只运行一次吗图里面为什么运行2次
static静态变量只被初始化一次,是函数或类的内部保存值
这里,相当于你的newfile.php执行结束之前,$temperature=25;只会被初始化一次。
即第一次调用ee()时$temperature初始化为25,
第二次调用ee()时,$temperature没有在被重新初始化,而是沿用函数内部的保存值25
你可以在static$temperature=25后面加两句,
++$temperature;echo$temperature.'<br/>';
在运行会打印26和27
ee()函数执行了多少次,就会在25上加多少
因为$temperature只有第一次被初始化为25,后面都是沿用之前运算后的值
‘叁’ Notice: Undefined index: actiontype in D:\freehost\tsnanion\web\app\controller\index.php on line
首先,这个不是错误,是warning。所以如果服务器不能改,每个变量使用前应当先定义。
方法1:服务器配置修改
修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE
方法2:对变量进行初始化,规范书写(比较烦琐,因为有大量的变量)。但还没有找到好定义方法,望大家指教
方法3:每个文件头部加上:error_reporting(0); 如果不行,只有打开php.ini,找到display_errors,设置为display_errors = Off。以后任何错误都不会提示。ini_set(“display_errors”, 0);
方法4 :做判断:isset($_GET["page"]) if-else判断
或者加上’@'表示这行如果有错误或是警告不要输出老埋
如:@$page=$_GET["page"]
方法5:file1.php文件把$xx变量付一个值,用post传递给file2.php,
如果file2.php没铅含信有$xx的定义,而直接使用$yy=$xx; 系统就会报错:”undifined variaable $xx”, 如果file2.php的文件开始用$xx=”槐轮";定义,那么file1.php的$xx值就传不过来了!
file2.php里可以这样
if(!isset($xx)) $xx=”";
‘肆’ 关于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变量初始化。用null。0。'' 那个好
习惯上都是用0的,因为0代表你初始化的这个变量时整形,而空则说明暂时不确定你初始化的这个变量的类型是什么,哪个好你应该明白了吧
‘陆’ php中函数内部的变量怎么设置为全局变量
使用引用啊
给你写个例子啊,稍等
<?php
$A = 10; //初始化一个变量, 并赋值10
echo $A; //输出这个值
echo ''; //这里输出一个换行符是等下演示运行的时候为了区分
function B( &$B ) { //自定义函数, 参数是引用形式
$B += 33; //给参数的值再加上33;
}
B( $A ); //调用这个自定义函数, 并把变量A作为参数
echo $A; //再次输出变量A的值
php面向过程编程方式中的自定义函数, 是一个独立的整体, 参数和返回值可以理解为是函数本身和函数之外的一个接口而已!
换句话说,常规下, 自定义函数中的变量与外部变量并没有关系, 哪怕变量名一模一样。各自独立!
而添加引用就不同了,引用可以理解为,比如说,就像2个手机号码绑定消费一样, 任何一个手机号消费, 就等于2个号都在消费,,当然,这是一个比喻啊!
如对您有帮助,望采纳,谢谢
‘柒’ ThinkPHP遇到的类私有变量赋值问题
Home\Common\Map.class.php文件
<?php
namespace Home\Common;
class Map {
static function getName() {
$map = array(
'0' => '张三',
'1' => '李四',
'2' => '王五',
'3' => '赵六'
);
return $map;
}
}
Home\Controller\IndexController.class.php文件
<?php
namespace Home\Controller;
use Think\Controller;
use Home\Common\Map as map;
class IndexController extends Controller {
private $sex = array(0,1);
private $name = map::getName(); // 写法1
// 测试 静态函数 类私有变量赋值
public function getName() {
$name = map::getName(); // 写法2
var_mp($name);
}
}
其中,写法1出错,显示:
写法2显示:
如果想私有变量赋值,可以构造函数赋值,即在__construct()里赋值:
$this->name = map::getName(); // 注意千万别写成$this->$name
类的变量成员叫做“属性”,或者叫“字段”、“特征”。属性声明是由关键字 public , protected 或者 private 开头,然后跟一个普通的变量声明来组成。 属性中的变量可以初始化,但是初始化的值必须是常数 ,这里的常数是指 PHP 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。
在类的成员方法里面,可以用 -> (对象运算符):$this -> property(其中 property 是该属性名)这种方式来访问 非静态属性 。 静态属性 则是用 :: (双冒号):self::$property 来访问。
当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用(通常是该方法所从属的对象,但如果是从第二个对象 静态 调用时也可能是另一个对象)。
具体请参考:http://php.net/manual/zh/language.oop5.properties.php