曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6282|回复: 4
打印 上一主题 下一主题

PHP 变量

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2009-6-13 15:47:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、PHP 中自定义变量的名称是区分大小写的,但是包括 True 和 False在内的 PHP关键字和函数名是不区分大小写的

例-1:PHP关键字
 echo("我是关键字" . True);
输出
我是关键字1

2、变量的赋值
如果指定一个数超出了 integer 范围,将会被解释为 float 。同样,如果执行的运算结果超出 integer 范围,也会返回 float 。

3、字符串

(1)单引号方式给字符串赋值
 $single_str = '我被单引号括起来了!<br>';
        echo $single_str;
如果要将字符串输出到浏览器中,可以使用关键字 "echo" 或者 "print" 。
如果想在浏览器中输出单引号,则必须在字符串中加入转义符号 "\",如在单引号前面加上转义符 '\' 即可输出单引号。
在单引号内,允许的唯一转义符就是单引号 " '  "

( 2 )双引号方式给字符串赋值
和使用单引号一样。在双引号中字符串中通用用 '\' 作为转义字符输出特殊符号。
在双引号里边,可以直接使用单引号,而单引号也不会被直接输出,而不需要在单引号面前使用转义字符。

( 3 )Heredoc 方式
Heardoc 的字面意思是 “此处文档” ,用来提供一种较容易的长串管理办法。通常情况下,使用单引号或者双引号已经够用,但是在处理长字符串的时候,使用 Heredoc 方式更方便。尤其在从文件或者数据库中将打断文档输出到浏览器的时候,采用这种方法就非常方便了。如下示例:
[Plain Text] 纯文本查看 复制代码
 $heredoc_str =<<<heredoc_mark
                hello<br>
                dollar $ <br>
                反斜杠 \ <br>
                "i love you" <br>
                'i hate you' <br>
heredoc_mark;
        echo $heredoc_str

输出
hello
        dollar $
        反斜杠 \
        "i love you"
        'i hate you'
从上面代码中可以看出,heredoc 方式是将要输出的文档内容包括在 "<<heredoc_mark" 和 "heredoc_mark;" 之间。
注意:heredoc_mark; ( 注意最后这个heredoc后面有个分号 ) 表示字符串结束,必须放在行首,不能缩进。另外,heredoc_mark 可以自己命名。

( 4 ) 串中的变量。
在用双引号和 heredoc 语法定义的串内可以包含其他变量。在 PHP 中,有两种方法可以包含其他变量:直接将变量插入到字符串中,这种方法比较简单;将变量用大括号括起来,以便得到正确的结果。
字符串中包含变量示例:
[Plain Text] 纯文本查看 复制代码
$str_1 = "my value!";
 $str_2 = "str_1 : $str_1<br>";
 echo $str_2;
 $str_3 = 'str_1 : $str_1<br>';
 echo $str_3;
 $str_4 = "str_1 : ${str_1}2<br>";
 echo $str_4;

输出
str_1 : my value!
str_1 : $str_1
str_1 : my value!2
由程序及输出可知:
      如果是双引号字符串,字符串中包含的变量名称,输出的时候,会直接输出变量的值。
      如果是单引号字符串,字符串中包含的变量名称,输出的时候,会直接输出变量的名称而不是变量的值。
      用大括号是为了更明晰的输出变量,假如没有大括号,上面的就会变成 $str_12,因为没有这个变量,就会输出空值,用了大括号就不会;另外 ${str_1} 和 {$str_1} 是一样的意思。

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
沙发
 楼主| 发表于 2009-6-13 17:50:12 | 只看该作者

判断变量的类型

方法
使用函数: void var_dump ( mixed expression [, mixed expression [, ...]] )

示例
[Plain Text] 纯文本查看 复制代码
$str_1 = "my value!";
$str_5 = 10;
var_dump($str_1,$str_5);


输出
string(9) "my value!"int(10)
上面,string(9) 中的 9 表示这个字符串有 9 个字符; int(10) 中的 10 表示这个变量的值就是整数 10 。

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
板凳
 楼主| 发表于 2009-6-19 12:16:48 | 只看该作者

通过 IS 函数判断变量类型

PHP 中提供了许多 IS 函数,用于判断是否是一个指定的对象或者变量,如:
is_bool()  -- 是否是布尔类型
is_float()  -- 是否是浮点类型
is_int()     -- 是否是整型
is_numeric() -- 是否为数值型
is_string()  -- 是否为字符串
is_array() -- 是否为数组
is_object() -- 是否为对象

测试程序:
<?php
$a = 0.1;
$b = 'hi';
$c = True;

if ( is_numeric($a) )
    echo '$a 是数值型<br>';
else
    echo '$a 不是数值型<br>';

if ( is_int($a) )
    echo '$a 是整型<br>';
else
    echo '$a 不是整型<br>';

if ( is_string($b) )
    echo '$b 是字符串型<br>';
else
    echo '$b 不是字符串型<br>';

if ( is_bool($c) )
    echo '$c 是布尔型<br>';
else
    echo '$c 不是布尔型<br>';

?>

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
地板
 楼主| 发表于 2009-6-19 17:36:54 | 只看该作者

检查变量是否设置

为了保证代码能够在各种设置下安全运行,最好在使用变量之前判断是否定义了该变量。这里有两个函数用以判断是否变量已经定义:

(1) isset() 函数。该函数检测变量是否设置:
bool isset ( mixed var [, mixed var [, ...]] )
如果 var 存在,则返回 True,否则返回 FALSE。
如果已经使用 unset() 释放了一个变量,则该变量没有被设置。
如果使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时注意的是,一个 NULL 字节 ( "\\0" )并不等同于 PHP 的 NULL 常数。
注意:
isset() 只能用于变量,传递任何其他参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。

(2)empty() 函数。该函数检查一个变量是否为空:
bool empty ( mixed var )
如果参数 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
注意:
虽然 empty() 和 isset() 函数都可以判断一个变量是否设定。但是 empty() 和 isset() 在对待 0 和空字符串的时候,结果是不一样的。空字符串和0,对 empty 来说表示为空;而对 isset() 函数来说,表示已经设置。

测试代码
<?php
$a=0.1;    //定义变量
$b=0;    //0值
$c=""//空字符串
if (isset($a))
    echo '$a已经被定义<br>';
else
    echo '$a没有被定义<br>';

if (!empty($a))
    echo '$a不为空<br>';
else
    echo '$a为空<br>';

if (isset($b))
    echo '$b已经被定义<br>';
else
    echo '$b没有被定义<br>';

if (!empty($b))
    echo '$b不为空<br>';
else
    echo '$b为空<br>';


if (isset($c))
    echo '$c已经被定义<br>';
else
    echo '$c没有被定义<br>';

if (!empty($c))
    echo '$c不为空<br>';
else
    echo '$c为空<br>';

if (isset($d))
    echo '$d已经被定义<br>';
else
    echo '$d没有被定义<br>';

if (!empty($d))
    echo '$d不为空<br>';
else
    echo '$d为空<br>';
?>
运行及输出
$a已经被定义
$a不为空
$b已经被定义
$b为空
$c已经被定义
$c为空
$d没有被定义
$d为空

12

主题

16

帖子

55

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
55
5#
发表于 2009-10-13 21:40:41 | 只看该作者
我去年学过一点点,不过,现在忘得差不多了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-21 09:48 , Processed in 0.067129 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表