变量
- $a ?? 0 等同于 isset($a) ? $a : 0。
- $a ?: 0 等同于 $a ? $a : 0。
- empty: 判断一个变量是否为空(null、false、00、0、’0′、』这类,都会返回true)。
- isset: 判断一个变量是否设置(值为false、00、0、’0′、』这类,也会返回true)。
empty() 函数
用于检查一个变量是否为空。
empty() 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
empty() 5.5 版本之后支持表达式了,而不仅仅是变量。
版本要求:PHP 4, PHP 5, PHP 7
empty() 并不会产生警告,哪怕变量并不存在。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。bool empty ( mixed $var )
当 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()
字符串
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”));
?>
方法
- 1bool method_exists ( mixed $object , string $method_name )检查类的方法是否存在于指定的 object中。
- 2如果 method_name 所指的方法在 object 所指的对象类中已定义,则返回 TRUE,否则返回 FALSE。
- 3如果此类不是已知类,使用此函数会使用任何已注册的 autoloader。