PHP | 变量、标量知识梳理与运用详析

1. 变量名定义

  • $变量名的形式定义(即注意以$符号开头标识)
    demo:
<?php
    $var = "大河之水天上来";
    echo $var;
    
    echo "<br />";
    
    $var = "奔流到海不复还";
    echo $var;
    echo "<br />";
    
    $a = "高堂明镜悲白发";
    echo $a;
    
    echo "<br />";
    
    $a = "朝如青丝暮成雪";
    echo $a;
?>

输出:

大河之水天上来
奔流到海不复还
高堂明镜悲白发
朝如青丝暮成雪
  • 变量采取弱变量的机制(变量的类型取决于所赋的变量值)
    var_dump函数可以将变量的数据类型显示出来:
<?php 
$var_name = "青莲";
$n = 3000;
$c = "1";
$f = 9.0;
$l = 300000000000000000;
$b = ture;

var_dump($var_name);
var_dump($n);
var_dump($c);
var_dump($f);
var_dump($l);
var_dump($b);

?>

输出:

string(6) "青莲"
int(3000)
string(1) "1"
float(9)
int(300000000000000000)
string(4) "ture"




2. 变量名的命名规则

  1. 变量名必须以字母或下划线 _开头,如$_name,$name,$name2等,但是$9name是不对的;

  2. 变量名只能由字母、数字、以及“_”组成,还能包含汉字。如$_qq,$qq308 ,$my_apple,比如$name我等,但是$name*是不对的。

  3. 变量名不允许包含空格。当变量名由多个单词组成,建议使用_进行分隔,即下划线法,
    或者以大写字母开头比如 $myApple,即驼峰命名法)。

  4. PHP中变量名区分大小写,如$my_book$my_Book代表两个不同的变量。

demo:

<?php
    $my_book = "小写book";
    $my_BOOK = "大写BOOK";
    $Iam青莲居士 = "李白";
    echo $my_book;
    echo "<br />";
    echo $my_BOOK;
    echo "<br />";
    echo $Iam青莲居士;
    echo "<br />";
?>




3. 变量的数据类型

  • 在变量中,由于变量占用的空间单元不一样,也分成几种数据类型;
  • 可以通过使用memory_get_usage()获取当前PHP消耗的内存

demo:

<?php 
echo $m1 = memory_get_usage(); 
echo "<br />";

$var_string = "123"; 
echo $m2 = memory_get_usage()-$m1; 
echo "<br />";

$n = 123;
echo $m3 = memory_get_usage()-$m1-$m2; 
echo "<br />";

$f = 123.00; 
echo $m4 = memory_get_usage()-$m1-$m2-$m3; 
echo "<br />";
 
$var_array = array("123");
echo $m5 = memory_get_usage()-$m1-$m2-$m3-$m4; 
echo "<br />";

echo $m6 = memory_get_usage(); 
?>

运行结果:

625656
360
288
288
632
627368

由结果可见:
初始化消耗了624056,
字符串消耗328,
整型和浮点型都是288,
数组消耗632;

注意:根据操作系统、PHP版本以及PHP的运行方式可能输出结果会不同。

  • 在PHP中,支持8种原始数据类型,
    4种标量类型boolean(布尔型),integer(整型),float(浮点型)和string(字符串型)
    2种复合类型array(数组)和object(对象)
    2种特殊类型resource(资源)与空值(null)
    PHP是一门松散类型的语言,不必向PHP声明变量的数据类型,PHP会自动把变量转换为变量值对应的数据类型;

demo:

<?php 
 $string = "诗酒剑仙";
 var_dump($string);
 echo "<br />";
 $string = 3000;
 var_dump($string);
 echo "<br />";
?>

运行结果:

string(12) "诗酒剑仙"

int(3000)

由结果可见变量$string的数据类型随赋值的变化而变化。




4. 标量类型:布尔类型

布尔类型(boolean)

  • 只有两个值,一个是TRUE,另一个FALSE;
  • 它不区分大小写,”TRUE”和“true”效果一样;
  • 注意:当我们用echo指令输出布尔类型时,
    如果是true则输出的是1
    false什么也不输出
  • 可以使用var_dump(),查看其数据类型。
<?php 
    $man  = "男";
    $flag = $man == "男";
    
    echo $flag ;
    echo "<br />" ;
    var_dump($flag);
?>

运行结果:

1
bool(true)




5. 标量类型:整型

  • 类似于常见的整数。可以用十进制、八进制、十六进制指定。

demo:

<?php
$data_int1 = 123;
echo $data_int1;
echo "<br />";

$data_int2 = -123;
echo $data_int2;
echo "<br />";

$data_int3 = 0123;
echo $data_int3;
echo "<br />";

$data_int4 = 0x123;
echo $data_int4;
echo "<br />";
?>

运行结果:

123
-123
83
291

八进制的“0123;”等于10进制中的83,
十六进制的“0x123;”等于10进制的291。




6. 浮点型(浮点数、双精度数或实数)

也就是小数,可以用小数点或者科学计数法表示。
科学计数法可以使用小写的e,也可以使用大写的E
demo:

<?php
$num_float1 = 1.234;    //小数点  
echo $num_float1;
echo "<br />";

$num_float2 = 1.2e3;    //科学计数法,小写e  
echo $num_float2;
echo "<br />";

$num_float3 = 7.0E-3;     //科学计数法,大写E  
echo $num_float3;
echo "<br />";
?>

运行结果:

1.234
1200
0.007




7. 标量类型:字符串

7.1 字符串型可以用三种方法定义:单引号形式、双引号形式和Heredoc结构形式;
7.2 字符串中包含引号的时候,有以下几种解决方案:

a. 在单引号嵌入双引号
b. 在双引号嵌入单引号
c. 使用转义符\
demo:

<?php 
$str_string1 = '"向晚意不适,"';//单引号中嵌入双引号
$str_string2 = "'驱车登古原。'";//双引号中嵌入单引号
$str_string3 = '\'夕阳无限好,\'';//转义符
$str_string4 = "\"只是近黄昏。\"";
echo $str_string1;
echo "<br />";
echo $str_string2;
echo "<br />";
echo $str_string3;
echo "<br />";
echo $str_string4;
echo "<br />";
?>

输出结果:

"向晚意不适,"
'驱车登古原。'
'夕阳无限好,'
"只是近黄昏。"
7.3 当引号遇到美元符号标识符

双引号中包含变量时,变量所指向的内容会与双引号中其他内容连接成一个字符串输出;
单引号中包含变量时,变量会被连同$被当做普通字符串输出。

demo:

<?php 
$love = "俱怀逸兴壮思飞!"; 
$string1 = "$love ,欲上青天揽明月!";
$string2 = '$love ,欲上青天揽明月!';
echo $string1;
echo "<br />";
echo $string2;
?>

运行结果:

俱怀逸兴壮思飞! ,欲上青天揽明月!
$love ,欲上青天揽明月!
7.4 当所需输入的字符串很长
  • 可以使用Heredoc结构形式解决;
    a. 首先使用定界符(<<<)表示字符串;
    b. 接着在<<<之后提供一个标识符
    标识符可以自己随意定制一个特定的字符串,如待会儿例子中的LiTaiBai);
    c. 然后编写长段字符串
    d. 最后以提供/定制的这个标识符结束字符串。
    e. 首位的标识符必须是一样的;
    f. 在结尾的一行一定要另起一行,并且此行除了标识符,并以号结束之外,不能有任何其他字符,
    前后都不能有,空格也不行!否则会出现错误

demo:

<?php 
$string1 = <<<LiTaiBai
弃我去者,昨日之日不可留;
乱我心者,今日之日多烦忧。
长风万里送秋雁,对此可以酣高楼。
蓬莱文章建安骨,中间小谢又清发。
俱怀逸兴壮思飞,欲上青天览明月。
抽刀断水水更流,举杯消愁愁更愁。
人生在世不称意,明朝散发弄扁舟。
LiTaiBai;

echo $string1;
?>

输出结果:

弃我去者,昨日之日不可留;
乱我心者,今日之日多烦忧。
长风万里送秋雁,对此可以酣高楼。
蓬莱文章建安骨,中间小谢又清发。
俱怀逸兴壮思飞,欲上青天览明月。
抽刀断水水更流,举杯消愁愁更愁。
人生在世不称意,明朝散发弄扁舟。




8. 第一种特殊类型:资源(resource)

  • 资源是由专门的函数建立和使用的,例如打开文件、数据连接、图形画布
  • 可以对资源进行操作(创建、使用和释放)。
  • 任何资源,在不需要的时候应该被及时释放
  • 如果忘记释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽

demo:

<?php
$file=fopen("f.txt","r");   //打开文件
$con=mysql_connect("localhost","root","root");  //连接数据库
$img=imagecreate(100,100);//图形画布
?>

下面是读取一个服务器文件的参考模板:

<?php 
//首先采用“fopen”函数打开文件,得到返回值的就是资源类型。
$file_handle = fopen("/data/webroot/ressource/php/f.txt","r");
if ($file_handle){
    //接着采用while循环(后面语言结构语句中的循环结构会详细介绍)一行行地读取文件,然后输出每行的文字
    while (!feof($file_handle)) { //判断是否到最后一行
        $line = fgets($file_handle); //读取一行文本
        echo $line; //输出一行文本
        echo "<br />"; //换行
    }
}
fclose($file_handle);//关闭文件
?>




9. 第二种特殊类型:空类型

  • NULL是空类型,对大小写不敏感
    NULL类型只有一个取值,表示一个变量没有值

以下三种情况下变量便被认为是NULL/空值:

  • 被赋值为NULL
  • 尚未赋值
  • unset()(注销变量的定义)

demo:

<?php 
 error_reporting(0); //禁止显示PHP警告提示
 $var;
 var_dump($var);
 
 $var1 = null;
 var_dump($var1);
 
 $var2 = NULL;
 var_dump( $var2);
 
 $var3 = "节日快乐!";
 unset($var3);//变量“$var3”被注销定义
 var_dump($var3);
?>

运行结果:

NULL
NULL
NULL
NULL




参考资料(慕课网)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容

  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 3,096评论 4 97
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,746评论 0 10
  • 1.认识php php是服务端嵌入到HTML中的脚本语言。php的功能包括但不限于: 收集表单数据 生成动态网页 ...
    楠哥哥_0b86阅读 846评论 3 1
  • 参考资料:PHP5 权威编程 变量 定义:$变量名 = 值; 例如:$demo = 1; 变量的基...
    _1633_阅读 1,673评论 1 4
  • 半年之前,有一段时间,早上起床之后会不定期地觉得手腕、肢踝疼痛,于是翻了下自己的体检报告想看看能不能从里面找到一些...
    塞爾魚阅读 201评论 0 0