is_array
- is_array – 检测变量是否是数组
- 说明:
is_aray(mixed $var):bool
如果 $var 是array,则返回true,否则返回false
$arr = [1,2,3];
var_dump(is_array($arr)); // bool(true)
$str = "123";
var_dump(is_array($str)); // bool(false)
explode
-
explode – 使用一个字符串分割另一个字符串
-
说明:
explode(string $delimiter, string $string, int $limit = ?):array
此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,他们被字符串 delimiter 作为边界点分割出来。 -
参数:
- delimiter:
边界上的分隔字符。 - string:
输入的字符串 - limit:
如果设置了 limit 参数并且是正数,则返回的数组包含做多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
如果 limit 参数是负数,则返回除了最后 -limit 个元素外的多有元素。
如果 limit 是0,则会被当做1
- delimiter:
-
返回值:
此函数返回由字符串组成的 array,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。
如果 delimiter 为空字符串(""),explode() 将返回false。如果 delimiter 所包含的值在 string 中找不到,则使用了负数的 limit,那么会返回空的 array,否则返回包含 string 单个元素的数组
$string = "/data/www/project/publi/index.php";
$dir_arr = explode("/", $string);
var_dump($dir_arr);
// array(6) {
// [0]=> string(0) ""
// [1]=> string(4) "data"
// [2]=> string(3) "www"
// [3]=> string(7) "project"
// [4]=> string(5) "publi"
// [5]=> string(9) "index.php"
// }
关于limit 参数的案例:
$str = 'one|two|three|four';
print_r(explode('|', $str, 2));
// Array ( [0] => one [1] => two|three|four )
print_r(explode('|', $str, 0));
// Array ( [0] => one|two|three|four )
print_r(explode('|', $str, 1));
//Array ( [0] => one|two|three|four )
print_r(explode('|', $str, -1));
// Array ( [0] => one [1] => two [2] => three )
implode
- impload – 将一个一维数组转化为字符串
- 说明:
implode( string $glue, array $pieces ) : string
implode( array $pieces ) : string
用 过 glue 将一维数组的值连接为一个字符串 - 参数:
- glue:
默认为空的字符串 - pieces:
你想要的转换的数组
- glue:
- 返回值:
返回一个字符串,其内容为由 glue 分割开的数组的值。
$arr = ["lastname", "email", "phone"];
$comma_separated = implode(",", $arr);
var_dump($comma_separated);
// string(20) "lastname,email,phone"
var_dump(implode('hello', []));
// string(0) ""
var_dump(implode('', []));
// string(0) ""
var_dump(implode($arr));
// string(18) "lastnameemailphone"
split
- split – 用正则表达式将字符串分割到数组中
- php4, php5版本函数
preg_split
-
preg_split – 通过一个正则表达式分割字符串
-
说明:
preg_split( string $pattern, string $subject, int $limit = -1, int $flags = 0) : array
通过一个正则表达式分割给定字符串。 -
参数:
- pattern:
用于搜索的模式,字符串形式 - subject:
输入字符串 - limit:
如果指定,将限制分割得到的子串最多只有 limit 个,返回的最后一个子串将包含所有剩余部分。limit 值为 -1,0或 null 时都代表 “不限制”。 - flags:
- flags 可以是任何下面标记的组合(以位或运算 | 组合):
- PREG_SPLIT_NO_EMPTY:
如果这个标记被设置,preg_split() 将仅返回分隔后的非空部分。 - PREG_SPLIT_DELIM_CAPTURE
如果这个标记设置了,用于分割的模式中的括号表达式将被捕获并返回。 - PREG_SPLIT_OFFSET_CAPTURE
如果这个标记被设置,对于每一个出现的匹配,返回时将将会附加字符串偏移量。
注意:这将会改变返回数组中的每一个元素,使其每个元素成为一个由0个元素为分割后的子串,第1个元素为该子串在 subject 中的偏移量组成的数组。
- pattern:
-
返回值:
返回一个使用 pattern 边界分隔 subject 后得到的子串组成的数组,或者在失败时返回 false。
//使用逗号或空格(包含" ", \r, \t, \n, \f)分隔短语
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
// Array
// (
// [0] => hypertext
// [1] => language
// [2] => programming
// )
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
// Array
// (
// [0] => s
// [1] => t
// [2] => r
// [3] => i
// [4] => n
// [5] => g
// )
$chars = preg_split('//', $str);
print_r($chars);
// Array
// (
// [0] =>
// [1] => s
// [2] => t
// [3] => r
// [4] => i
// [5] => n
// [6] => g
// [7] =>
// )
$str = 'hypertext language programming';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
// Array (
// [0] => Array (
// [0] => hypertext
// [1] => 0
// )
// [1] => Array (
// [0] => language
// [1] => 10
// )
// [2] => Array (
// [0] => programming
// [1] => 19
// )
// )
$chars = preg_split('/ /', $str);
print_r($chars);
// Array
// (
// [0] => hypertext
// [1] => language
// [2] => programming
// )
$chars = preg_split('/ /', $str, 2, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
// Array
// (
// [0] => Array
// (
// [0] => hypertext
// [1] => 0
// )
// [1] => Array
// (
// [0] => language programming
// [1] => 10
// )
// )
$str = 'hypertext language programming';
$chars = preg_split('/hypertext/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($chars);
// Array
// (
// [0] => language programming
// )
$chars = preg_split('/(hypertext)/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($chars);
// Array
// (
// [0] => hypertext
// [1] => language programming
// )
unset
- unset – 释放给定的变量
- 说明:
unset(mixed $val, mixed $… = ?) : void
unset() 销毁指定的变量。
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
如果在函数中 unset() 一个全局变量,则只有局部变量被销毁,而在调用环境中的变量将保持调用unset() 之前一样的值。
function destroy_foo() {
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo; // bar
// unset全局变量
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
var_dump($bar); // NULL
// unset掉引用变量,只有局部变量被销毁。
// 在调用环境中变量将保持调用 unset() 之前一样的值。
function foo(&$bar) {
unset($bar);
$bar = "blah";
}
$bar = 'something';
echo "$bar\n"; // something
foo($bar);
echo "$bar\n";// something
// unset 静态变量,在函数内部静态变量将销毁。
// 但是,再次调用函数时,静态变量被复原为上次销毁之前的值。
function foo()
{
static $bar;
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar = 23;
echo "after unset: $bar\n";
}
foo(); // Before unset: 1, after unset: 23
foo(); // Before unset: 2, after unset: 23
foo(); // Before unset: 3, after unset: 23
-
参数:
- var:
要销毁的变量 - …:
其他变量……
- var:
-
返回值:
没有返回值。 -
注释:
因为是一个语言结构而不是一个函数,不可以被可变函数调用
在 unset() 一个无法访问的对象属性时,如果定义了 __unset() 则对调用这个重载方法