1. PHP 输出主要方法

字符串

  1. echo “str”
  2. print “str”

区别:

  • print有返回值为1,只能接收一个参数,可用于三元运算符
  • echo没有返回值,可接收多个参数用逗号(,)隔开
  1. <?php
  2. //echo
  3. echo "using echo";
  4. echo "<hr>";
  5. //print
  6. $a = print "using print";
  7. //return value of print
  8. echo " return ".$a;
  9. echo "<hr>";
  10. $b = "using echo ";
  11. echo $b,$b;
  12. echo "<hr>";

*注:ob_clean() 使之前代码不输出

数组

  1. var_dump(arr)
  2. print_r(arr,可选参数:true/false)
  3. var_export(arr,可选参数:true/false)

区别:

  • 输出格式不同
  • print_r()和var_export()可以设置第二个参数true,以使内容不显示在浏览器中,但其返回值可以储存在变量中用于日志记录
  1. ob_clean();
  2. $arr = [1,true,"hehe",3.14];
  3. //数组也可这样声明
  4. // $arr2 = Array("id"=>1,"name"=>"haha","working"=>false);
  5. echo "using echo \$arr";
  6. echo "<hr>";
  7. echo $arr;
  8. echo "<hr>";
  9. echo "using var_dump(\$arr)";
  10. echo "<hr>";
  11. var_dump($arr);
  12. echo "<hr>";
  13. echo "using print_r(\$arr)";
  14. echo "<hr>";
  15. print_r($arr);
  16. echo "<hr>";
  17. echo "using var_export(\$arr)";
  18. echo "<hr>";
  19. var_export($arr);
  20. echo "<hr>";
  21. echo "using print_r(\$arr,true)";
  22. print_r($arr,true);
  23. echo "<hr>";
  24. echo "using var_export(\$arr,true)";
  25. var_export($arr,true);

  1. $v1=print_r($arr,true);
  2. $v2=var_export($arr,true);
  3. file_put_contents("log1.txt",$v1);
  4. file_put_contents("log2.txt",$v2);

*注:<pre></pre>标签可使内容保持文本格式输出和

2. PHP 数据类型

var_dump() or gettype() 可以用于查看数据类型

2.1 标量类型

  • Integer
  • Float
  • String
  • Boolean

2.2 特殊类型

  • resource
  • null

*注:@符号在PHP中用作错误控制操作符。当表达式附加@符号时,将忽略该表达式可能生成的错误消息。

resource类型

  1. <?php
  2. //resource 资源类型 保存到外部资源的一个引用
  3. //fopen
  4. $reader = fopen("log1.txt","w");
  5. var_dump($reader);
  6. //resource(3) of type (stream)
  7. // 3是id stream是资源类型
  1. //imagecreate()
  2. $image_creater = imagecreate(100,50);
  3. var_dump($image_creater);
  4. //resource(4) of type (gd)
  5. // id gd是PHP的一个库,默认打开(phpinfo()可见)

null类型

  1. //null 表示变量没有值
  2. $reader = null;
  3. var_dump($reader);
  4. //NULL
  5. unset($image_creater);
  6. var_dump($image_creater);
  7. //NULL

2.3 数据类型转换

  • 强制转换(临时,原变量类型和值不变)
  • 自动转换(数值,字符串,布尔)(临时,原变量类型和值不变)
  • 当变量的值超过系统预定义的范围也会发生自动类型转换,如int

强制类型转换

  1. <?php
  2. # 强制类型转换
  3. $page = '3';
  4. echo gettype($page);
  5. echo "<hr>";
  6. $newPage = (int)$page;
  7. echo gettype($newPage);
  8. echo "<hr>";
  9. var_dump($newPage,(string)$newPage,(float)$newPage);
  10. echo "<hr>";
  11. var_dump((array)$newPage,((array)$newPage)[0]);

自动类型转换—数值
(使用+ - 运算符,计算的数据需为数值类型,如果不是数值类型,会触发自动转换)

  1. # 自动类型转换
  2. $a = "200pigs";
  3. @$a += 100;
  4. var_dump($a);
  5. // int(300)
  6. $a += 5.5;
  7. var_dump($a);
  8. // float(305.5)
  9. $a += null + "10";
  10. var_dump($a);
  11. // float(315.5)

自动类型转换—字符串
(使用 . 拼接字符串,会触发自动转换为字符串)

  1. echo "I am ". 18 ." years old ".true;
  2. // I am 18 years old 1

自动类型转换—布尔

  1. # if判断中,null等同于false
  2. if (!null) {
  3. echo "ok";
  4. }
  5. // ok

以上转换不改变原来变量的类型和值

强制改变变量的类型

  1. @settype($page,boolean);
  2. echo "<hr>";
  3. echo $page;
  4. // 1
  5. echo gettype($page);
  6. // boolean

2.4 php强类型模式

  • 以下函数中,传入的参数会强制转为int型
  1. function add(int $a, int $b) : string {
  2. return $a + $b;
  3. }
  4. var_dump(add(11.11,22.22));
  5. // string(2) "33"

3. 变量

3.1 变量命名方式

  • 字母,数字,下划线
  • 不能以数字开头
  • 不能使用关键字
  • 变量区分大小写,函数名不区分

3.2 变量赋值

  • 值(value)
    将变量a的值赋给变量b,复制出新的值内存地址空间,值发生变化时互不影响
  • 引用(reference)
    • 将对变量a的引用赋给变量b,使变量b指向同一个地址,没有复制,速度更快
    • unset()被引用的变量只会解除变量间的关联
  1. $a = 100;
  2. $b = $a;
  3. $c = &$a;
  4. echo "\$a=$a, ","\$b=$b, ","\$c=$c";
  5. echo "<hr> change a to 55: \$a=55<hr>";
  6. $a = 55;
  7. echo "\$a=$a, ","\$b=$b, ","\$c=$c";
  8. echo "<hr>unset(\$a)<hr>";
  9. echo "\$a=$a, ","\$b=$b, ","\$c=$c";
  10. echo "<hr> change a to 99: \$a=99<hr>";
  11. echo "\$a=$a, ","\$b=$b, ","\$c=$c";

3.3 检查变量函数

  • isset()
    若变量存在且不为null,返回true;反之返回false
  1. $uname = "Tom";
  2. var_dump(isset($uname));
  3. //bool(true)
  4. $uname = null;
  5. var_dump(isset($uname));
  6. //bool(false)
  • empty() 判断变量是否为空字符串/null/0/false,是其中之一则返回true;反之返回false
  1. $upwd = "";
  2. var_dump(empty($upwd));
  3. // bool(true)
  4. $upwd = null;
  5. var_dump(empty($upwd));
  6. // bool(true)
  7. $upwd = 0;
  8. var_dump(empty($upwd));
  9. // bool(true)
  10. $upwd = 1;
  11. var_dump(empty($upwd));
  12. // bool(false)
  13. $upwd = false;
  14. var_dump(empty($upwd));
  15. // bool(true)
  16. $upwd = true;
  17. var_dump(empty($upwd));
  18. // bool(false)

3.4 变量作用域

  • 定义在函数外部的变量是全局变量,在函数内无法直接访问
  • 定义在函数内部的变量是局部变量,在函数外无法访问
  • 在函数中使用全局变量
    • global $a, $b
    • $GLOBALS[“a”],$GLOBALS[“b”]
  1. $a = 10;
  2. $b = 20;
  3. function a(){
  4. echo $a+$b;
  5. }
  6. a();
  7. //0
  8. #在函数中使用全局变量
  9. #1. global
  10. function b(){
  11. global $a, $b;
  12. echo $a+$b;
  13. }
  14. b();
  15. //30
  16. #2. $GLOBALS[name]
  17. function c(){
  18. echo $GLOBALS["a"]+$GLOBALS["b"];
  19. }
  20. c();
  21. //30

3.5 预定义的全局变量

  • 数组
  • 任何地方都可以访问,无作用域限制
  1. // $GLOBALS: 引用全局作用域中可用的全部变量
  2. // $_SERVER: 服务器和执行环境信息
  3. // $_GET :通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组
  4. // $_POST:当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本
  5. // $_FILES:通过 HTTP POST 方式上传到当前脚本的项目的数组
  6. // $_COOKIE:通过 HTTP Cookies 方式传递给当前脚本的变量的数组
  7. // $_SESSION:当前脚本可用 SESSION 变量的数组
  8. // $_REQUEST: 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组
  9. // $_ENV: 通过环境方式传递给当前脚本的变量的数组

例 $_GET
获取地址栏后面的参数
http://phps.com/0426/demo5.php?id=1&age=22

  1. echo "<pre>".print_r($_GET,true)."<pre>";

4. 常量

  • 用const声明(不是$)或define(NAME,value),但在类中只能用const
  • 定义时必须初始化
  • 不能重新被定义或者取消定义
  • 通常为固定的值,名称大写
  • 常量,类,接口,函数,是全局成员,而变量不是
  1. <?php
  2. # 常量 const, define(name,value)定义
  3. const PATH = "/0426/demo4.php";
  4. const FEMALE = "女";
  5. define("MALE","男");
  6. printf("性别 <br> Male %s <br> Female %s",MALE,FEMALE);
  7. //printf() 格式化输出
  8. # 在类中定义常量只能使用 const
  9. class Test{
  10. const PATH = "/0426/demo4.php";
  11. }

4.1 系统预定义常量

get_defined_constants(true/false)

echo "<pre>".print_r(get_defined_constants(true),true)."<pre>";

4.2 魔术常量

  • 预定义的常量,但值取决于使用的位置


(source:https://www.php.net/manual/en/language.constants.magic.php)

  1. <?php
  2. echo "line: ".__LINE__;
  3. // line: 2

更多相关文章

  1. 4.13 在vSphere环境中创建不同类型的文件夹
  2. 语法基础: 使用不同的数据类型标记数组
  3. 如何在定义局部变量时赋初始值
  4. php入门之 js数组遍历与php的区别
  5. SQLyog
  6. 【php基础入门】运算符、流程控制语句及单双引号和模块化编程的
  7. PHP第二课:变量,常量,魔术常量
  8. 浅谈 Integer 类
  9. jedis五种数据类型的方法解释

随机推荐

  1. Android中IPC框架的理解
  2. Android SDK 2.0安装、配置图文教程
  3. android开发每日汇总【2011-11-26】
  4. Android使用addView动态添加组件
  5. android小说阅读源码、bilibili源码、MVP
  6. android:screenOrientation属性(转)
  7. 连线:纯正Android已死 “Android兼容设备
  8. Android hardware so加载流程
  9. ListView的一些应用
  10. android rom短信模块最后获取的Cursor字