PHP圣经的学习札记(不断更新中)

By | February 26, 2018
  1. 单引号包起来的字符串是原始字符串,里面的任何变量或者如换行符这样的特殊字符都是不起作用的,把它们当作字面量来处理。
  2. 在PHP中,标识符是区分大小写的,但函数名例外。变量名称可以和函数名称相同,但鉴于防止混淆,尽量避免。

  3. PHP 有两种特殊的数据类型:NULL(空)和resourse(资源)。

  4. 没有被赋值、已经被重置或者被赋值为特殊值 NULL 的变量就是 NULL 类型的变量。

  5. 基本上不能直接操作一个 resourse 变量。

  6. PHP 会在字符串开始处寻找数字,并且使用这些数字作为该字符串的值,如果没找到数字,该字符串的值则为 0。

  7. 可变变量:极少数允许改变变量名称的语言。即是用一个变量的值作为另一个变量的名称(标识符)。

  8. heredoc 形式的输出。
    如果没有结束标记符,则theEnd后面必须追加上个分号

<?php
echo <<<theEnd
 line 1 
 line 2
 line 3
theEnd;
?>
  1. 关于数据类型转换
<?php
$totalqty = 0;
//取出保存在 $totalqty 的变量值,將其解释成一个浮点类型,并將其保存在 $totalamount 中。
$totalamount = (float)$totalqty;
echo $totalamount; // 0
?>
  1. 常量
<?php
define('TIREPRICE', 100);
define('OILPRICE', 10);
define('SPARKPRICE', 4);
// 引用常量时并没有 '$' 符号。
// 常量只可以保存布尔值、整数、浮点数或者字符串等标量数据。
?>

Updated On: 2018-02-27
11. 引用赋值

<?php
$a = 5;
$b = &$a; //引用赋值,把 $a 的值所在的地址赋给 $b
echo "\n";
echo 'b=' . $b; // b=5
$a = 7;
echo "\n";
echo 'b=' . $b; // b=7
// 书中原文:重置不会改变$b(7)的值,但是可以破坏$a和值7保存在内存中的链接
unset($a);
echo "\n";
var_dump($a); // NULL
var_dump($b); //int(7)
?>
  1. 比较操作符:

* 等于:==。两边操作数只要值相等,就为 True。
* 恒等于:===。这个比较比“等于”严格。两边操作数必须值和类型都相等,就为 True。
* 不恒等:!==。无论值相不相等的情况下,只需要数据类型不等,就是不恒等,即为 True,这恰恰与“恒等于”完全相反。其他情况均为 False。
* 不等:!=。这个比较比“不恒等”严格。如果值相等,类型不相等,为 False;即,值和类型均不等,或者,值不相等,为 True。
13. 逻辑操作符: 以下逻辑操作符的优先级为左高于右:&&和and、||和or。
14. 类型操作符:instanceof。
15. number_format(arg1, arg2)函数,来自 PHP 的 Math 库,將数字格式化为字符串。arg1 是数字,arg2 为整数,表示为 arg1 保留多少位小数。、
16. 按位操作符:按位或 |,按位与 &,按位非 ~、按位异或 ^、左位移 <<($a << $b 表示 $a 向左移动 $b 个比特位)、右位移 >>。
17. 错误抑制操作符@:可以在任何表达式前面使用。

<?php
$a = @(57/0);
var_dump($a); // float(INF)
  1. 执行操作符
<?php
// 返回的值相当于在命令行下执行所得的结果。
$out = `ls -l`;
echo "<pre>{$out}</pre>";
?>
  1. print 操作符
<?php
// 听说 print 操作符还会返回数字 1
var_dump(print("Hello world.\n"));
?>

Updated On: 2018-02-28
20. 数据类型

/**
 *
 * Updated On: 2018-02-28
 * 数据类型
 */
echo "\n2018-02-28\n";

$mixed = 1;
var_dump($mixed); //int(1)

$mixed = 'a';
echo "\n";
var_dump($mixed); // string(1) "a"

$mixed = True;
echo "\n";
var_dump($mixed); // bool(true)

$mixed = array();
echo "\n";
var_dump($mixed); // array(0) {}

class MyObj{}
$mixed = new MyObj;
echo "\n";
var_dump($mixed); // object(MyObj)#2 (0) {}

$mixed = 0.01;
echo "\n";
var_dump($mixed); // float(0.01)

// $mixed 值为整数类型
$mixed = 1;
echo "\n";
var_dump($mixed); // int(1)
  1. settype函数:改变变量的数据类型
<?php
// settype($mixed),
// 此函数改变变量的数据类型,
// 而不光是改变值的。
var_dump(settype($mixed, 'string')); // bool(true)
var_dump($mixed); // string(1) "1"

// 如果转换为数字类型,值为 12。
$mixed = '12a';
// settype($mixed, type) 返回 True 或者 False。
var_dump(settype($mixed, 'float')); // bool(true)
var_dump($mixed); // float(12)
?>
  1. is_numeric函数,测试是否为数字,或者由数字组成的字符串。
<?php
// 测试是否为数字,或者由数字组成的字符串。
var_dump(is_numeric('12a')); // bool(false)
var_dump(is_numeric('12')); // bool(true)
?>
  1. isset和empty函数,测试变量是否存在
<?php
echo "\n";
//$var = NULL; // false
// $var = 'a';
$var = ''; //True
// isset($mixed[,$var,]),测试变量是否存在,
// 参数里的变量都存在才返回 true。
var_dump(isset($mixed, $var)); // true

echo "\n";
// 以下四个返回值都为 bool(true)
var_dump(empty($var1));
$var1 = 0;
var_dump(empty($var1));
$var2 = '0';
var_dump(empty($var2));
$var3 = NULL;
var_dump(empty($var3));

echo "\n";
$mixed = '0';
var_dump(isset($mixed)); // bool(true)
var_dump(isset($mixed1)); // bool(false)
// empty()遇 0 为真
var_dump(empty($mixed)); // bool(true)
$mixed = NULL;
var_dump(isset($mixed)); // bool(false)
// 遇 NULL 为真
var_dump(empty($mixed)); // bool(true)
//不存在为真。
var_dump(empty($mixed1)); // bool(true)
?>
  1. 转换变量的值,而不是变量本身。
<?php
echo "\n";
// 转换的都是变量的值,而不是变量本身。
// 將十六进制转换为十进制。
var_dump(intval('16', 16)); //22
var_dump(floatval('16')); //float(16)  
$int1 = 123;
var_dump(floatval($int1)); // float(123)
var_dump($int1); // int(123)
?>
  1. switch 语句
<?php
echo "\n";
$option = 1;

/**
 * 
 * switch 语句,根据变量的值来选择要执行的语句。
 * 遇到 break 关键词终止匹配,从而停止执行,
 * 否则,將不停地运行,即使遇到 default 值。
 *
 * 以下 switch 语句的值为:
 * 1
 * 2
 * false
 * 3
 * default
 */
switch($option){
    case 0:
        echo "0\n";
        break;
    case 1:
        echo "1\n";
    case 2:
        echo "2\n";
    case false:
        echo "false\n";
    case 3:
        echo "3\n";
    default:
        echo "default\n";
        break;
}
?>

Created On: 2018-02-26

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,也欢迎指正,一起学习,共同进步。如果本文对您有帮助,而且让您觉得值得为内容付费,那么就请赞助(打赏)一下本人,这不强制。打赏支持微信支付,方法是使劲地戳一下下方的“打赏”按钮,然后得到微信收款的二维码,再用微信支付扫一下,就像买菜那样。祝好!