91、exit
输出一个消息并且退出当前脚本
示例1:
<?php
$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
or exit("unable to open file ($filename)");
?>
示例2: exit() 状态码例子
<?php
//exit program normally
exit;
exit();
exit(0);
//exit with an error code
exit(1);
exit(0376); //octal
?>
示例3:无论如何,Shutdown函数与析构函数都会被执行
<?php
class Foo
{
public function __destruct()
{
echo 'Destruct: ' . __METHOD__ . '()' . PHP_EOL;
}
}
function shutdown()
{
echo 'Shutdown: ' . __FUNCTION__ . '()' . PHP_EOL;
}
$foo = new Foo();
register_shutdown_function('shutdown');
exit();
echo 'This will not be output.';
?>
以上例程会输出:
Shutdown: shutdown() Destruct: Foo::__destruct()
92、die
等同于 exit()
// die('程序中断');后面的就不执行了
//exit('代码中断');后面的就不执行了,与die类似
93、register_shutdown_function
注册在关闭时执行的函数
register_shutdown_function(callable
$callback
, mixed...$args
): void
注册一个
callback
,它会在脚本执行完成或者 exit() 后被调用。可以多次调用 register_shutdown_function(),这些被注册的回调会按照他们注册时的顺序被依次调用。如果你在注册的方法内部调用 exit(),那么所有处理会被中止,并且其他注册的中止回调也不会再被调用。
关闭函数也可以调用 register_shutdown_function() 来将关闭函数添加到队列的末尾。
<?php
function shutdown()
{
// 这是关闭函数,在脚本完成前可以进行任何最后的操作。
echo 'Script executed with success', PHP_EOL;
}
register_shutdown_function('shutdown');
?>
注意:
在某些 web 服务器(如 Apache)上,可以在中止函数内对脚本的工作目录进行修改。
94、is_array
检测变量是否是数组
<?php
$yes = array('this', 'is', 'an array');
echo is_array($yes) ? 'Array' : 'not an Array';
echo "\n";
$no = 'this is a string';
echo is_array($no) ? 'Array' : 'not an Array';
?>
以上例程会输出:
Array not an Array
参见:
- array_is_list() - 判断给定的 array 是否为 list
- is_float() - 查找变量的类型是否是浮点型
- is_int() - 检测变量是否是整数
- is_string() - 查找变量的类型是否是字符串
- is_object() - 查找变量是否是对象
95、instanceof
//对象是一个容器,是全局成员的一个前缀
//以人为例,类是筛选标准,小明符合标准,小明就是这个类的实例化
//类:全局成员,声明:class,大驼峰命名,如UserName(帕斯卡命名)
//1.类的声明
class Goods
{
//...
}
//2.类的实例化
$goods = new Goods();
//实例总是与一个类绑定,是某个类的实例
//对象更通用一些,在不引起歧义的情况下,实例其实就是对象
//如果实在要区分,那么实例化是一个过程,但是没有对象化一说
//3.类的判断
var_dump($goods instanceof Goods);
echo '<hr>';
以上例程会输出:
bool(true)
96、get_class
echo get_class($goods) . '<hr>';
以上例程会输出:
_0812\Goods
97、ucfirst
将字符串的首字母转换为大写
将
string
的首字符(如果首字符是"a"
(0x61)到"z"
(0x7a)范围内的 ASCII 字符)转换为大写字母,并返回这个字符串。注意字母的定义取决于当前区域设定。例如,在默认的 “C” 区域,字符 umlaut-a(ä)将不会被转换。
<?php
$foo = 'hello world!';
$foo = ucfirst($foo); // Hello world!
$bar = 'HELLO WORLD!';
$bar = ucfirst($bar); // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!
?>
参见:
- lcfirst() - 使字符串的第一个字符小写
- strtolower() - 将字符串转化为小写
- strtoupper() - 将字符串转化为大写
- ucwords() - 将字符串中每个单词的首字母转换为大写
- mb_convert_case() - 对字符串进行大小写转换
98、__construct
//构造方法:魔术方法,不用用户主动调用,由某个事件或动作来触发
//__get,__set
//构造方法,实例化该类时,会自动触发
public function __construct($username,$salary,$age,$nation='China')
{
$this->username = $username;
$this->salary = $salary;
$this->age = $age;
//静态成员可以用构造函数进行实例化
//初始化静态属性
self::$nation = $nation;
}
//静态成员 static
//静态属性
public static $nation = '中国';
99、array_key_exists
检查数组里是否有指定的键名或索引
数组里有键
key
时,array_key_exists() 返回true
。key
可以是任何能作为数组索引的值。返回值:成功时返回
true
, 或者在失败时返回false
。
注意:
array_key_exists() 仅仅搜索第一维的键。 多维数组里嵌套的键不会被搜索到。
示例1:
<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
echo "The 'first' element is in the array";
}
?>
示例2:array_key_exists() 与 isset() 的对比,isset() 对于数组中为 null
的值不会返回 true
,而 array_key_exists() 会。
<?php
$search_array = array('first' => null, 'second' => 4);
// 返回 false
isset($search_array['first']);
// 返回 true
array_key_exists('first', $search_array);
?>
100、isset
检测变量是否已声明并且其值不为
null
判断一个变量是否已设置, 即变量已被声明,且其值不为
null
。如果一个变量已经被使用 unset() 释放,它将不再被认为已设置。
若使用 isset() 测试一个被赋值为
null
的变量,将返回false
。 同时要注意的是 null 字符("\0"
)并不等同于 PHP 的null
常量。如果一次传入多个参数,那么 isset() 只有在全部参数都已被设置时返回
true
。 计算过程从左至右,中途遇到未设置的变量时就会立即停止。
返回值:如果
var
存在并且值不是null
则返回true
,否则返回false
。
示例1:
<?php
$var = '';
// 结果为 TRUE,所以后边的文本将被打印出来。
if (isset($var)) {
echo "This var is set so I will print.";
}
// 在后边的例子中,我们将使用 var_dump 输出 isset() 的返回值。
// the return value of isset().
$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
?>
这对于数组中的元素也同样有效:
<?php
$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));
var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE
// 键 'hello' 的值等于 NULL,所以被认为是未置值的。
// 如果想检测 NULL 键值,可以试试下边的方法。
var_dump(array_key_exists('hello', $a)); // TRUE
// Checking deeper array values
var_dump(isset($a['pie']['a'])); // TRUE
var_dump(isset($a['pie']['b'])); // FALSE
var_dump(isset($a['cake']['a']['b'])); // FALSE
?>
示例2:在字符串位移中使用 isset()
<?php
$expected_array_got_string = 'somestring';
var_dump(isset($expected_array_got_string['some_key']));
var_dump(isset($expected_array_got_string[0]));
var_dump(isset($expected_array_got_string['0']));
var_dump(isset($expected_array_got_string[0.5]));
var_dump(isset($expected_array_got_string['0.5']));
var_dump(isset($expected_array_got_string['0 Mostel']));
?>
以上例程会输出:
bool(false) bool(true) bool(true) bool(true) bool(false) bool(false)
isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。
注意: 因为是语言构造器而不是函数,不能被 可变函数 或者 命名参数 调用。
注意:
如果使用 isset() 来检查对象无法访问的属性,如果 __isset() 方法已经定义则会调用这个重载方法。