变量

  1. $a ?? 0 等同于 isset($a) ? $a : 0。
  2. $a ?: 0 等同于 $a ? $a : 0。
  3. empty: 判断一个变量是否为空(null、false、00、0、’0′、』这类,都会返回true)。
  4. isset: 判断一个变量是否设置(值为false、00、0、’0′、』这类,也会返回true)。

    empty() 函数

    用于检查一个变量是否为空。
    empty() 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
    empty() 5.5 版本之后支持表达式了,而不仅仅是变量。
    版本要求:PHP 4, PHP 5, PHP 7
    1. bool empty ( mixed $var )
    empty() 并不会产生警告,哪怕变量并不存在。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。

当 var 存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE。
以下的变量会被认为是空的:

  • “”(空字符串)
  • 0(作为整数的0)
  • 0.0(作为浮点数的0)
  • “0”(作为字符串的0)
  • NULL
  • FALSE
  • array()(一个空数组)
  • $var; (一个声明了,但是没有值的变量)

isset()

只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。
检测变量是否设置

$a = "test";
$b = "anothertest";

var_dump( isset($a) );      // TRUE
var_dump( isset ($a, $b) ); // TRUE

unset ($a);

var_dump( isset ($a) );     // FALSE
var_dump( isset ($a, $b) ); // FALSE

$foo = NULL;
var_dump( isset ($foo) );   // FALSE

unset() 函数

用于销毁给定的变量。

<?php
// 销毁单个变量
unset ($foo);

// 销毁单个数组元素
unset ($bar['quux']);

// 销毁一个以上的变量
unset($foo1, $foo2, $foo3);
?>

var_dump($a)

PHP中的调试函数,用于判断一个变量的类型与长度,并输出变量的数值。用var_dump打印所有的对象,可以查看对象内部的数据结构;var_dump里面的变量必须是存在的。

var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的是一个合法的 PHP 代码。

数字

is_numeric()

函数用于检测变量是否为数字或数字字符串。

$var_name1=678;
$var_name2="a678";

if (is_numeric($var_name1)) {
    echo "$var_name1 是数字" . PHP_EOL; //678 是数字
} else {
    echo "$var_name1 不是数字" . PHP_EOL ;
}

if (is_numeric($var_name2)) {
    echo "$var_name2 是数字" . PHP_EOL ;
} else {
    echo "$var_name2 不是数字" . PHP_EOL ; //a678 不是数字
}



$var_name3="678";
$var_name4="runoob.com";
$var_name5=698.99;
$result=is_numeric($var_name3);
echo "[ $var_name3 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name4);
echo "[ $var_name4 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name5);
echo "[ $var_name5 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name6);


$var_name6=array("a1","a2");
$var_name7=+125689.66;
echo "[ $var_name6 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name7);
echo "[ $var_name7 是数字吗? ]" .var_dump($result);


bool(true)
[ 678 是数字吗? ]
bool(false)
[ runoob.com 是数字吗? ]
bool(true)
[ 698.99 是数字吗? ]
bool(false)
[ Array 是数字吗? ]
bool(true)
[ 125689.66 是数字吗? ]

pow() 函数

pow() 函数返回 x 的 y 次方。

<?php
echo(pow(2,4) . "<br>"); // 16
echo(pow(-2,4) . "<br>"); //16
echo(pow(-2,-4) . "<br>");//0.625
echo(pow(-2,-3.2));//NAN
?>

rand(min,max)

参数 描述
min,max 可选。规定随机数产生的范围。

round() 函数

对浮点数进行四舍五入。
提示:如需向上舍入为最接近的整数,请查看 ceil() 函数。
提示:如需向下舍入为最接近的整数,请查看 floor() 函数。

number 必需。规定要舍入的值。
precision 可选。规定小数点后的尾数。默认是 0,也可以为负数。

abs()

abs() 函数返回一个数的绝对值。
abs(x)

字符串

explode()分割字符串为数组

explode() 函数把字符串打散为数组。
注释:separator“ 参数不能是空字符串。
注释:该函数是二进制安全的。
explode(separator,string,limit)

参数 描述
separator 必需。规定在哪里分割字符串。
string 必需。要分割的字符串。
limit 可选。规定所返回的数组元素的数目。
可能的值:
- 大于 0 - 返回包含最多 limit 个元素的数组
- 小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组
- 0 - 返回包含一个元素的数组
$str = '电气鼠,蒹葭苍苍,小飞鱼,奶片';
// 根据逗号分割,将字符串转成数组
$array = explode(',', $str);
var_dump($array);

sprintf() 函数

把百分号(%)符号替换成一个作为参数进行传递的变量

echo sprintf("%%b = %b",$num1)."<br>"; // 二进制数
echo sprintf("%%c = %c",$char)."<br>"; // ASCII 字符
echo sprintf("%%d = %d",$num1)."<br>"; // 带符号的十进制数
echo sprintf("%%d = %d",$num2)."<br>"; // 带符号的十进制数
echo sprintf("%%e = %e",$num1)."<br>"; // 科学计数法(小写)
echo sprintf("%%E = %E",$num1)."<br>"; // 科学计数法(大写)
echo sprintf("%%u = %u",$num1)."<br>"; // 不带符号的十进制数(正)
echo sprintf("%%u = %u",$num2)."<br>"; // 不带符号的十进制数(负)
echo sprintf("%%f = %f",$num1)."<br>"; // 浮点数(视本地设置)
echo sprintf("%%F = %F",$num1)."<br>"; // 浮点数(不视本地设置)
echo sprintf("%%g = %g",$num1)."<br>"; // 短于 %e 和 %f
echo sprintf("%%G = %G",$num1)."<br>"; // 短于 %E 和 %f
echo sprintf("%%o = %o",$num1)."<br>"; // 八进制数
echo sprintf("%%s = %s",$num1)."<br>"; // 字符串
echo sprintf("%%x = %x",$num1)."<br>"; // 十六进制数(小写)
echo sprintf("%%X = %X",$num1)."<br>"; // 十六进制数(大写)
echo sprintf("%%+d = %+d",$num1)."<br>"; // 符号说明符(正)
echo sprintf("%%+d = %+d",$num2)."<br>"; // 符号说明符(负)

str_replace() 字符串替换

把字符串 “Hello world!” 中的字符 “world” 替换为 “Shanghai”:
echo str_replace(“world”,”Shanghai”,”Hello world!”);

stripcslashes()

删除 “World!” 前面的反斜杠:
stripcslashes() 函数删除由 addcslashes() 函数添加的反斜杠。
提示:该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。

<?php
echo stripslashes("Hello \World!");
?>

substr():截取字符串

substr($string, $start [, $length])

<?php
    $str = 'http://c.biancheng.net/php/';
    echo substr($str, 7).'<br>';
    echo substr($str, -5).'<br>';
    echo substr($str, 7, 15).'<br>';
    echo substr($str, 7, -5).'<br>';
    echo substr($str, -20, -5).'<br>';
    echo substr($str, -20, 15).'<br>';
    var_dump(substr($str, 30));
    echo '<br>';
    var_dump(substr($str, 7, 0));
?>

c.biancheng.net/php/
/php/
c.biancheng.net
c.biancheng.net
c.biancheng.net
c.biancheng.net
bool(false)
string(0) “”

json

$a = new ArrayObject();
 $b = json_decode(json_encode($a), true);
 var_dump(empty($b));
 var_dump(json_encode($b));

 $c = json_decode(json_encode($a));
var_dump(empty($c));
var_dump(json_encode($c));

bool(true)
string(2) “[]”
bool(false)
string(2) “{}”

json_encode()

该函数主要用来将数组和对象,转换为json格式。

  • 参数必须是utf-8编码,否则会得到空字符或者null
  • 除了公开变量(public),其他东西(常量、私有变量、方法等等)都遗失 ```php $arr = array (‘a’=>1,’b’=>2,’c’=>3,’d’=>4,’e’=>5);   echo json_encode($arr); 

// {“a”:1,”b”:2,”c”:3,”d”:4,”e”:5} 

$obj->body = ‘another post’;   $obj->id = 21;   $obj->approved = true;   $obj->favorite_count = 1;   $obj->status = NULL;   echo json_encode($obj); 

// {    “body”:”another post”,     “id”:21,     “approved”:true,     “favorite_count”:1,     “status”:null  }

$arr = Array(‘one’, ‘two’, ‘three’);   echo json_encode($arr);  // [“one”,”two”,”three”]  

<a name="Qp47p"></a>
## json_decode()
该函数用于将json文本转换为相应的PHP数据结构。
```php
$json = '{"foo": 12345}';
   
$obj = json_decode($json);  
print $obj->{'foo'}; // 12345
  • 通常情况下,json_decode()总是返回一个PHP对象,而不是数组 ```php $json = ‘{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}’; var_dump(json_decode($json));

object(stdClass)#1 (5) {     [“a”] => int(1)    [“b”] => int(2)    [“c”] => int(3)    [“d”] => int(4)    [“e”] => int(5)   } 


- 如果想变成数组
```php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
 
var_dump(json_decode($json,true));

array(5) {  
   ["a"] => int(1)     ["b"] => int(2)     ["c"] => int(3)     ["d"] => int(4)     ["e"] => int(5)  
}

常见错误使用

// json的分隔符(delimiter)只允许使用双引号,不能使用单引号
$bad_json = "{ 'bar': 'baz' }";  

// 任何情况下都必须使用双引号
$bad_json = '{ bar: "baz" }';  

// 最后一个值之后不能添加逗号
$bad_json = '{ "bar": "baz", }';

如果解析错误返回null
var_dump(json_decode(“Hello World”)); //null

时间

注意 : 时间类需要指定东八区
date_default_timezone_set(“Etc/GMT-8”);
https://www.cnblogs.com/weekend001/p/3594419.html

time() 函数

time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。
PHP Date/Time 参考手册

<?php
  $t=time();
  echo($t . "<br>");  // 1632293703
  echo(date("Y-m-d",$t)); // 2021-09-22
?>

date() 函数

格式化本地日期和时间,并返回已格式化的日期字符串。

// 输出日、日期、月、年、时间 AM 或 PM
echo date("l jS \of F Y h:i:s A");
Wednesday 22nd of September 2021 02:56:25 PM

printf(date("Y-m-d h:i:s")."\n");

date(“l”); //data就可以获取英文的星期比如Sunday
date(“w”); //这个可以获取数字星期比如123,注意0是星期日

$weekarray=array(“日”,”一”,”二”,”三”,”四”,”五”,”六”); //先定义一个数组
echo “星期”.$weekarray[date(“w”)]; // 中文星期几

$weekarray=array(“日”,”一”,”二”,”三”,”四”,”五”,”六”);
echo “星期”.$weekarray[date(“w”,”2011-11-11”)]; // 指定日期星期几

PHP strtotime() 函数

将任何英文文本的日期或时间描述解析为 Unix 时间戳

参数 描述
time 必需。规定日期/时间字符串。
now 可选。规定用来计算返回值的时间戳。如果省略该参数,则使用当前时间。


<?php
strtotime(“2009-10-21 16:00:10”)

echo(strtotime(“now”) . “
“);
echo(strtotime(“5 September 2016”) . “
“);
echo(strtotime(“+5 hours”) . “
“);
echo(strtotime(“+1 week”) . “
“);
echo(strtotime(“+1 week 3 days 7 hours 5 seconds”) . “
“);
echo(strtotime(“next Monday”) . “
“);
echo(strtotime(“last Sunday”));
?>

方法

  1. 1bool method_exists ( mixed $object , string $method_name )检查类的方法是否存在于指定的 object中。
  2. 2如果 method_name 所指的方法在 object 所指的对象类中已定义,则返回 TRUE,否则返回 FALSE。
  3. 3如果此类不是已知类,使用此函数会使用任何已注册的 autoloader。