您的位置:首页 > 编程语言 > PHP开发

php基本知识复习--变量

2016-05-19 14:28 691 查看
1、变量如何定义?如何检查变量是否定义?如何删除一个变量?判断一个变量是否为空的函数?

isset():若变量不存在或者其值为NULL,也返回 FALSE
unset():删除变量返回true
empty():变量已存在、非空字符串或者非零,则返回 false 值;反之返回 true。


2、什么是可变变量?

一个变量的变量名可以动态的设置和使用。
$a = 'hello' , $$a = 'world', $hello=world


3、变量赋值方式有哪几种?

1)直接赋值
2)变量间赋值
3)引用赋值


4、php中变量有哪些基本数据类型?

php支持8种原始数据类型。
包括:
四种标量类型(布尔型boolean,整型interger,浮点型float/double , 字符串string)
两种复合类型(数组array , 对象object)
两种特殊类型(资源resource,NULL)


5、引用和拷贝有什么区别?

拷贝是将原来的变量内容复制下来,拷贝后的变量与原来的变量使用各自的内存,互不干扰。
引用相当于是变量的别名,其实就是用不同的名字访问同一个变量内容。当改变其中一个变量的值时,另一个也跟着发生变化。
$a = 123;
$b = $a;
$c = &$a;
$a = 234; // a = 234, b = 123, c = 234
$c = 345; // a = 345


6、其它类型转换为boolean类型时,哪些被认为是false?

布尔值false,整型值0, 浮点型值0.0, 空白字符串, 字符串'0', 空数组,特殊数据类型NULL, 没有设定的变量。


7、empty()函数在哪些情况下返回true

布尔值false,
整型值0,
浮点型值0.0,
空白字符串,
字符串'0',
array()空数组,
特殊数据类型NULL,
没有任何属性的对象, 【没有测试出来,测试代码echo empty((object)array());】
没有赋值的变量。


8、如果定义了一个变量$a ,但是没有赋初始值 ,那么$a==0吗?$a==false吗?$a==”吗?$a==NULL吗??

PHP Notice:  Undefined variable: h in /home/li/learn/LearnPHP/test.php on line 24
bool(true)
PHP Notice:  Undefined variable: h in /home/li/learn/LearnPHP/test.php on line 25
bool(true)
PHP Notice:  Undefined variable: h in /home/li/learn/LearnPHP/test.php on line 26
bool(true)
PHP Notice:  Undefined variable: h in /home/li/learn/LearnPHP/test.php on line 27
bool(true)


会提示警告,但是依然输出true

9、如果定义了一个变量$a ,但是没有赋初始值,那么$a++,++$a

var_dump:PHP Notice:  Undefined variable: aa in /home/li/learn/LearnPHP/test.php on line 30
NULL     //提示警告,var_dump打印出null
echo:PHP Notice:  Undefined variable: ab in /home/li/learn/LearnPHP/test.php on line 31
//提示警告,打印出空行
var_dump:PHP Notice:  Undefined variable: ac in /home/li/learn/LearnPHP/test.php on line 32
int(1)  //提示警告
echo:PHP Notice:  Undefined variable: ad in /home/li/learn/LearnPHP/test.php on line 33
1       //提示警告


10、字符串怎么转成整数,有几种方法?怎么实现?

强制类型转换: (整型)字符串变量名;
asbdsg:0
123abc:123
0123:123
23543:23543
直接转换:settype(字符串变量,整型);settype($str1,'integer');
asbdsg:0
123abc:123
00000123dsgdsf2342:123
23543:23543

intval(字符串变量);
asbdsg:0
123abc:123
00000123dsgdsf2342:123
23543:23543


11、标量数据和数组的最大区别是什么?

一个标量只能存放一个数据,而数组可以存放多个数据。

12、常量如何定义? 如何检测一个常量是否被定义?常量的值只能是哪些数据类型?

define()//定义常量 , defined()//检查常量是否定义
常量的值只能是标量类型的数据。
(1).const用于类成员变量的定义,一经定义,不可修改。define不可用于类成员变量的定义,可用于全局常量。
(2).const可在类中使用,define不能。
(3).const不能在条件语句中定义常量
(4).const采用一个普通的常量名称,define可以采用表达式作为名称。
(5).const只能接受静态的标量,而define可以采用任何表达式。
(6).const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。


13、.常量和变量有哪些区别?

1)常量前没有\$符号;
2)常量只能通过define()定义,而不能通过赋值语句定义;
3)常量可以在任何地方定义和访问,而变量有全局和局部之分;
4)常量一旦定义就不能被重新定义或者取消定义,而变量而通过赋值方式重新定义;
5)常量的值只能是标量数据,而变量的数据库类型有8种原始数据类型。


14、PHP中常用的几个预定义的全局数组变量和系统内置常量

$_POST, $_GET, $_REQUEST, $_SESSION, $_COOKIE, $_FILES,$_SERVER, $_ENV, $GLOBALS
__FILE__ , __LINE__ , PHP_OS , PHP_VERSION


15、在实际开发中,常量最常用于哪些地方?

1)连接数据库的信息定义成常量,如数据库服务器的用户名、密码、数据库名、主机名;
2)将站点的部分路径定义成常量,如web绝对路径,smarty的安装路径,model、view或者controller的文件夹路径;
3)网站的公共信息,如网站名称,网站关键词等信息。


16、什么是局部变量和全局变量?函数内是否可以直接调用全局变量?

局部变量是函数内部定义的变量,其作用域是所在的函数。如果函数外还有一个跟局部变量名字一样的变量,
程序会认为它们两个是完全不同的两个变量。当退出函数的时候,其中的局部变量就同时被清除。
全局变量是定义在所有函数以外的变量,其作用域是整个php文件,但是在用户自定义的函数内部是无法使用的。
如果一定要在用户自定义的函数内部使用全局变量,那么就需要使用global关键字声明。
也就是说如果在函数内的变量前加上golbal来修饰,那么函数内部就可以访问到这个全局变量,
不仅可以利用这个全局变量进行运算而且可以对这个全局变量进行重新赋值。
全局变量还可以使用 $GLOBALS['var'] 来调用。


17、php中函数传递参数的方式有哪些?两者有什么区别?

按值传递和按地址传递(或按引用传递)
(1)按值传递:  待传递的变量,与传递给函数之后的变量是存储在不同的空间中。所以函数体内对该变量值做的修改,不影响原本的变量值。
(2)按地址传递: 使用 & 符号,表明该参数是以地址的方式传递值。并不会将主程序中的指定数值或目标变量传递给函数,而是把该数值或变量的内存储存区块地址导入函数之中,所以函数体内的该变量和主程序中的该变量在内存中是同一个。函数体做的修改,直接影响到函数体外部的该变量的值。


18、字符串运算符“.”与算术运算符“+”有什么区别?

当“a”“b”之间使用.时认为是连字符。如果两者间是+的时候php会认为是一次运算。
1)如果+号两边的字符串是数字组成的,那么会将字符串自动转为整型;
2)如果+号两边是纯粹的字母,那么会输出0;
3)如果+号两边的字符串是以数字开头的,那么会截取字符串开头的数字,然后进行运算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: