字符串函数
trim
说明
trim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] )
此函数返回字符串str
去除首尾空白字符后的结果。如果不指定第二个参数, trim() 将去除这些字符:
- " " (ASCII 32 (0x20)),普通空格符。
- “\t” (ASCII 9 (0x09)),制表符。
- “\n” (ASCII 10 (0x0A)),换行符。
- “\r” (ASCII 13 (0x0D)),回车符。
- “\0” (ASCII 0 (0x00)),空字节符。
- “\x0B” (ASCII 11 (0x0B)),垂直制表符。
参数
-
str
待处理的 字符串 。 -
charlist
可选参数,过滤字符也可由charlist
参数指定。一般要列出所有希望过滤的字符,也可以使用'..'
列出一个字符范围。
返回值
过滤后的字符串。
case
// " These are a few words :) ... "
$text = "\t\tThese are a few words :) ... " ;
/*
" Example string
"
*/
$binary = "\x09Example string\x0A" ;
// "Hello World"
$hello = "Hello World" ;
// "These are a few words :) ..."
$trimmed = trim ( $text );
// "These are a few words :)"
$trimmed = trim ( $text , " \t." );
// "o Wor"
$trimmed = trim ( $hello , "Hdle" );
// 清除 $binary 首位的 ASCII 控制字符
// (包括 0-31)
$clean = trim ( $binary , "\x00..\x1F" ); // "Example string"
str_pad
说明
str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )
该函数返回input
被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的pad_string
参数没有被指定,input
将被空格
字符填充,否则它将被`pad_string 填充到指定长度。
参数
-
input
输入字符串。 -
pad_length
如果pad_length
的值是负数
,小于或者等于
输入字符串的长度,不会
发生任何填充。 -
pad_string
如果填充字符的长度不能被pad_string
整除,那么pad_string
可能会被缩短。 -
pad_type
可选的pad_type
参数的可能值为STR_PAD_RIGHT
,STR_PAD_LEFT
或STR_PAD_BOTH
。如果没有指定pad_type
,则假定它是STR_PAD_RIGHT
。
返回值
返回填充后的字符串。
case
$input = "Alien" ;
echo str_pad ( $input , 10 ); // 输出 "Alien "
echo str_pad ( $input , 10 , "-=" , STR_PAD_LEFT ); // 输出 "-=-=-Alien"
echo str_pad ( $input , 10 , "_" , STR_PAD_BOTH ); // 输出 "__Alien___"
echo str_pad ( $input , 6 , "___" ); // 输出 "Alien_"
str_repeat
说明
str_repeat ( string $input , int $multiplier )
返回input
重复multiplier
次后的结果。
参数
-
input
待操作的字符串。 -
multiplier
input
被重复的次数。multiplier
必须大于等于0
。如果multiplier
被设置为0
,函数返回空字符串
。
返回值
返回重复后的字符串。
case
echo str_repeat ( "-=" , 10 ); // -=-=-=-=-=-=-=-=-=-=
echo str_repeat('a',0); // ''
str_split
说明
str_split ( string $string [, int $split_length = 1 ] )
将一个字符串转换为数组。
参数
-
string
输入字符串。 -
split_length
每一段的长度。
返回值
如果指定了可选的split_length
参数,返回数组中的每个元素均为一个长度为split_length
的字符块,否则每个字符块为单个
字符。
如果split_length
小于1
,返回FALSE
。如果split_length
参数超过了string
超过了字符串string
的长度,整个字符串将作为数组仅有的一个元素返回。
case
$str = "Hello" ;
/**
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
)
*/
$arr1 = str_split ( $str );
/**
Array
(
[0] => Hel
[1] => lo
)
*/
$arr2 = str_split ( $str , 3 );
strrev
说明
strrev ( string $string )
返回string
反转后的字符串。
参数
- string
待反转的原始字符串。
返回值
返回反转后的字符串。
case
echo strrev ( "Hello world!" ); // 输出 "!dlrow olleH"
strtolower
说明
strtolower ( string $string )
将string
中所有的字母字符转换为小写并返回。
参数
- string
输入字符串。
返回值
返回转换后的小写字符串。
case
//mary had a little lamb and she loved it so
echo strtolower ( $str );
strtoupper
说明
将string
中所有的字母字符转换为大写并返回。
同strtolower
ucfirst
说明
ucfirst ( string $str )
将str
的首字符(如果首字符是字母)转换为大写字母,并返回这个字符串。
参数
- str
输入字符串。
返回值
返回结果字符串
case
$foo = 'hello world!' ;
$foo = ucfirst ( $foo ); // Hello world!
$bar = 'HELLO WORLD!' ;
$bar = ucfirst ( $bar ); // HELLO WORLD!
$bar = ucfirst ( strtolower ( $bar )); // Hello world!
lcfirst
说明
将str
的首字符(如果首字符是字母)转换为小写字母,并返回这个字符串。
同ucfirst()
ucwords
说明
ucwords ( string $str )
将str
中每个单词的首字符(如果首字符是字母)转换为大写字母,并返回这个字符串。
这里单词的定义是紧跟在空白字符(空格符、制表符、换行符、回车符、水平线以及竖线)
之后的子字符串。
参数
- str
输入字符串。
返回值
返回转换后的字符串。
case
$foo = 'hello world!' ;
$foo = ucwords ( $foo ); // Hello World!
$bar = 'HELLO WORLD!' ;
$bar = ucwords ( $bar ); // HELLO WORLD!
$bar = ucwords ( strtolower ( $bar )); // Hello World!
htmlentities
说明
htmlentities ( string $string )
把字符串转为 HTML 实体
参数
- string
输入字符串。
返回值
返回转换后的字符串。
case
$str = "A 'quote' is <b>bold</b>" ;
// A 'quote' is <b>bold</b>
echo htmlentities ( $str );
strip_tags
说明
strip_tags ( string $str [, string $allowable_tags ] )
该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。
参数
-
string
输入字符串。 -
allowable_tags
使用可选的第二个参数指定不被去除的字符列表。
HTML 注释和 PHP 标签也会被去除。这里是硬编码处理的,所以无法通过 allowable_tags 参数进行改变。
返回值
返回处理后的字符串。
case
// Test paragraph. Other text
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>' ;
// 允许 <p> 和 <a>
// <p>Test paragraph.</p> <a href="#fragment">Other text</a>
echo strip_tags ( $text , '<p><a>' );
addcslashes
说明
addcslashes ( string $str )
在指定字符前添加反斜线转义字符串中字符
stripcslashes
说明
striplashes ( string $str )
删除addcslashes()
添加的反斜线
ord
说明
ord ( string $string )
返回字符串string
第一个字符的ASCII
码值。
参数
- string
输入字符串。
返回值
返回整型的 ASCII 码值。
chr
说明
chr ( int $ascii )
返回相对应于ascii
所指定的单个字符。
参数
- string
输入字符串。
返回值
返回规定的字符
strcasecmp
说明
strcasecmp ( string $str1 , string $str2 )
二进制安全比较字符串(不区分大小写)
。
参数
- str1
第一个字符串。 - str2
第二个字符串。
返回值
如果str1
小于str2
返回< 0
;如果str1
大于str2
返回> 0
;如果两者相等,返回0
。
chunk_split
说明
chunk_split ( string $body [, int $chunklen = 76 [, string $end = “\r\n” ]] )
使用此函数将字符串分割成小块。它会在每 chunklen 个字符后边插入 end。
参数
-
body
要分割的字符。 -
chunklen
分割的尺寸。 -
end
行尾序列符号。
返回值
返回分割后的字符。
case
$str = "Yar?m kilo ?ay, yar?m kilo ?eker";
// Yar? m ki lo ? ay, yar? m ki lo ? eker
echo chunk_split($str, 4);
// Yar?_+_m ki_+_lo ?_+_ay, _+_yar?_+_m ki_+_lo ?_+_eker_+_
## explode
###### 说明
> explode ( string $delimiter , string $string [, int $limit ] )
此函数返回由字符串组成的数组,每个元素都是`string`的一个子串,它们被字符串`delimiter`作为边界点分割出来。
###### 参数
- delimiter
边界上的分隔字符
- chunklen
分割的尺寸。
- string
输入的字符串
- limit
如果设置了`limit`参数并且是正数,则返回的数组包含最多`limit`个元素,而最后那个元素将包含`string`的剩余部分。
如果`limit`参数是负数,则返回除了最后的`-limit`个元素外的所有元素。
如果`limit`是`0`,则会被当做`1`。
###### 返回值
返回分割后的字符。
###### case
```php
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6" ;
// array(6) { [0]=> string(6) "piece1" [1]=> string(6) "piece2" [2]=> string(6) "piece3" [3]=> string(6) "piece4" [4]=> string(6) "piece5" [5]=> string(6) "piece6" }
var_dump(explode(' ',$pizza));
// array(2) { [0]=> string(6) "piece1" [1]=> string(34) "piece2 piece3 piece4 piece5 piece6" }
var_dump(explode(' ',$pizza,2));
// array(4) { [0]=> string(6) "piece1" [1]=> string(6) "piece2" [2]=> string(6) "piece3" [3]=> string(6) "piece4" }
var_dump(explode(' ',$pizza,-2));
// array(1) { [0]=> string(41) "piece1 piece2 piece3 piece4 piece5 piece6" }
var_dump(explode(' ',$pizza,0));
echo chunksplit($str, 4,’+_’);
## explode
###### 说明
> explode ( string $delimiter , string $string [, int $limit ] )
此函数返回由字符串组成的数组,每个元素都是`string`的一个子串,它们被字符串`delimiter`作为边界点分割出来。
###### 参数
- delimiter
边界上的分隔字符
- chunklen
分割的尺寸。
- string
输入的字符串
- limit
如果设置了`limit`参数并且是正数,则返回的数组包含最多`limit`个元素,而最后那个元素将包含`string`的剩余部分。
如果`limit`参数是负数,则返回除了最后的`-limit`个元素外的所有元素。
如果`limit`是`0`,则会被当做`1`。
###### 返回值
此函数返回由字符串组成的`array`,每个元素都是`string`的一个子串,它们被字符串`delimiter`作为边界点分割出来。
如果`delimiter`为空字符串`' '`,`explode()`将返回`FALSE`。如果`delimiter`所包含的值在`string`中找不到,并且使用了负数的`limit`,那么会返回空的`array`,否则返回包含`string`单个元素的数组。
###### case
```php
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6" ;
// array(6) { [0]=> string(6) "piece1" [1]=> string(6) "piece2" [2]=> string(6) "piece3" [3]=> string(6) "piece4" [4]=> string(6) "piece5" [5]=> string(6) "piece6" }
var_dump(explode(' ',$pizza));
// array(2) { [0]=> string(6) "piece1" [1]=> string(34) "piece2 piece3 piece4 piece5 piece6" }
var_dump(explode(' ',$pizza,2));
// array(4) { [0]=> string(6) "piece1" [1]=> string(6) "piece2" [2]=> string(6) "piece3" [3]=> string(6) "piece4" }
var_dump(explode(' ',$pizza,-2));
// array(1) { [0]=> string(41) "piece1 piece2 piece3 piece4 piece5 piece6" }
var_dump(explode(' ',$pizza,0));
// array(0) { }
var_dump(explode('?', $pizza, -2));
// array(1) { [0]=> string(41) "piece1 piece2 piece3 piece4 piece5 piece6" }
var_dump(explode('?', $pizza));
implode
说明
implode ( string $glue , array $pieces )
implode ( array $pieces )
用glue
将一维数组的值连接为一个字符串。
参数
- glue
默认为空的字符串。 - pieces
要转换的数组。
返回值
返回一个字符串,其内容为由glue
分割开的数组的值。
case
$array = array('lastname', 'email', 'phone');
// lastname,email,phone
var_dump(implode(",", $array));
// Empty string when using an empty array:
// string(0) ""
var_dump(implode('hello', array()));
substr
说明
substr ( string $string , int $start [, int $length ] )
返回字符串string
由start
和length
参数指定的子字符串。
参数
- string
输入字符串。 - start
如果start
是非负数,返回的字符串将从string
的start
位置开始,从`0 开始计算。
如果start
是负数,返回的字符串将从string结尾处
向前数第start
个字符开始。
如果string
的长度小于或等于start
,将返回FALSE
。
- length
如果提供了正数的length
,返回的字符串将从start
处开始最多包括length
个字符(取决于string
的长度)。
如果提供了负数的length
,那么string
末尾处的许多字符将会被漏掉(若 start 是负数则从字符串尾部算起)
。如果start
不在这段文本中,那么将返回一个空字符串
。
如果提供了值为0
,FALSE
或NULL
的length
,那么将返回一个空字符串
。
如果没有提供length
,返回的子字符串将从start
位置开始直到字符串结尾。
返回值
返回提取的子字符串, 或者在失败时返回 FALSE 。
case
echo substr('abcdef', 1); // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f
str_replace
说明
str_replace ( mixed $search , mixed $replace , mixed KaTeX parse error: Expected 'EOF', got '&' at position 16: subject [, int &̲count ] )
该函数返回一个字符串
或者数组
。该字符串
或数组
是将subject
中全部的search
都被replace
替换之后的结果。
如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换ereg_replace()
和preg_replace()
。
参数
如果search
和replace
为数组,那么str_replace()
将对subject
做二者的映射替换。如果replace
的值的个数少于search
的个数,多余的替换将使用空字符串
来进行。如果search
是一个数组而replace
是一个字符串,那么search
中每个元素的替换将始终使用这个字符串。该转换不会改变大小写
。
-
search
查找的目标值,也就是needle
。一个数组可以指定多个
目标。 -
replace
search
的替换值。一个数组可以被用来指定多重替换。 -
subject
执行替换的数组或者字符串。也就是haystack
。
如果subject
是一个数组,替换操作将遍历整个subject
,返回值也将是一个数组。
- count
如果被指定,它的值将被设置为替换发生的次数。
返回值
该函数返回替换后的数组或者字符串。
case
// 223
//echo str_replace("1", "2", "123");
// Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
//echo str_replace ( $vowels , "" , "Hello World of PHP" );
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy1 = array("pizza", "beer", "ice cream");
// You should eat pizza, beer, and ice cream every day.
//echo str_replace ( $healthy , $yummy1 , $phrase );
$yummy2 = array("pizza", "beer");
// You should eat pizza, beer, and every day.
//echo str_replace ( $healthy , $yummy2 , $phrase );
$str = str_replace("ll", "", "good golly miss molly!", $count);
// 2
//echo $count;
str_ireplace
说明
str_replace()
忽略大小写版本
substr_count
说明
substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )
返回子字符串needle
在字符串haystack
中出现的次数。注意needle
区分大小写。该函数不会计算重叠字符串。
参数
-
haystack
在此字符串中进行搜索。 -
needle
要搜索的字符串。 -
offset
开始计数的偏移位置。 -
length
指定偏移位置之后的最大搜索长度。如果偏移量加上这个长度的和大于haystack
的总长度,则打印警告
信息。
返回值
该函数返回整型
。
case
$text = 'This is a test';
echo strlen($text); // 14
echo substr_count($text, 'is'); // 2
// 字符串被简化为 's is a test',因此输出 1
echo substr_count($text, 'is', 3);
// 字符串被简化为 's i',所以输出 0
echo substr_count($text, 'is', 3, 3);
// 因为 5+10 > 14,所以生成警告
echo substr_count($text, 'is', 5, 10);
// 输出 1,因为该函数不计算重叠字符串
$text2 = 'gcdgcdgcd';
echo substr_count($text2, 'gcdgcd');
substr_replace
说明
substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] )
substr_replace()
在字符串string
的副本中将由start
和可选的length
参数限定的子字符串使用replacement
进行替换。
参数
-
string
输入字符串。 -
replacement
替换字符串。 -
start
如果start
为正数,替换将从string
的start
位置开始。
如果start
为负数,替换将从string
的倒数第start
个位置开始。
- length
如果设定了这个参数并且为正数
,表示string
中被替换的子字符串的长度。如果设定为负数
,它表示待替换的子字符串结尾处距离string
末端的字符个数。如果没有提供此参数,那么它默认为strlen( string ) (字符串的长度)
。当然,如果length
为0
,那么这个函数的功能为将replacement
插入到string
的start
位置处。
返回值
返回结果字符串。如果string
是个数组,那么也将返回一个数组。
case
$var = 'ABCDEFGH:/MNRPQR/';
// bob
echo substr_replace($var, 'bob', 0);
// bob
echo substr_replace($var, 'bob', 0, strlen($var));
// bobABCDEFGH:/MNRPQR/
echo substr_replace($var, 'bob', 0, 0);
// ABCDEFGH:/bob/
echo substr_replace($var, 'bob', 10, -1);
// ABCDEFGH:/bob/
echo substr_replace($var, 'bob', -7, -1);
// ABCDEFGH://
echo substr_replace($var, '', 10, -1);
similar_text
说明
similar_text ( string $first , string KaTeX parse error: Expected 'EOF', got '&' at position 17: …econd [, float &̲percent ] )
计算两个字符串的相似度
参数
-
first
第一个字符串。 -
second
第二个字符串。 -
percent
通过引用方式传递第三个参数,similar_text()
将计算相似程度百分数。
返回值
返回在两个字符串中匹配字符的数目。
case
$var1 = 'Hello';
$var2 = 'Hello';
$var3 = 'hello';
// 5
echo similar_text($var1, $var2);
// 4
echo similar_text($var1, $var3);
$var_1 = 'PHP IS GREAT';
$var_2 = 'WITH MYSQL';
// 计算公式为相同字符长度*2/两段字符的总长度
similar_text($var_1, $var_2, $percent);
// 27.272727272727
echo $percent;
// 18.181818181818
similar_text($var_2, $var_1, $percent);
echo $percent;
strstr
说明
strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回haystack
字符串从needle
第一次出现的位置开始到haystack
结尾的字符串。
参数
-
haystack
输入字符串。 -
needle
如果needle
不是一个字符串,那么它将被转化为整型并且作为字符的序号来使用。 -
before_needle
若为TRUE
,strstr()
将返回needle
在haystack
中的位置之前的部分。
返回值
返回字符串的一部分或者FALSE
(如果未发现 needle)。
case
$email = 'name@example.com';
// @example.com
echo strstr($email, '@');
// name
echo strstr($email, '@', true);
stristr
说明
strstr()
忽略大小写版本
strrchr
说明
strrchr ( string $haystack , mixed $needle )
该函数返回haystack
字符串中的一部分,这部分以needle
的最后出现位置开始,直到haystack
末尾。
参数
-
haystack
在该字符串中查找。 -
needle
如果needle
包含了不止一个字符,那么仅使用第一个字符。该行为不同于strstr()
。
如果needle
不是一个字符串,那么将被转化为整型并被视为字符顺序值。
返回值
返回字符串的一部分或者FALSE
(如果未发现 needle)。
case
$path = '/www/public_html/index.html';
// /index.html
echo strrchr($path, "/");
strtr
说明
strtr ( string $str , string $from , string $to )
strtr ( string $str , array $replace_pairs )
该函数返回str
的一个副本,并将在from
中指定的字符转换为to
中相应的字符。比如,$from[$n]
中每次的出现都会被替换为$to[$n]
,其中$n
是两个参数都有效的位移(offset)。
如果from
与to
长度不相等,那么多余的字符部分将被忽略。str
的长度将会和返回的值一样。
参数
-
str
待转换的字符串 。 -
from
字符串中与将要被转换的目的字符to
相对应的源字符。 -
to
字符串中与将要被转换的字符from
相对应的目的字符。 -
replace_pairs
参数replace_pairs
可以用来取代to
和from
参数,因为它是以array('from' => 'to', ...)
格式出现的数组。
返回值
返回转换后的字符串。
如果replace_pairs
中包含一个空字符串("")
键,那么将返回FALSE
。
case
$trans = array("hello" => "hi", "hi" => "hello");
// hello all, I said hi
echo strtr("hi all, I said hello", $trans);
// 1001
echo strtr("baab", "ab", "01");
$trans = array("ab" => "01");
// ba01
echo strtr("baab", $trans);
strpos
说明
strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
返回needle
在haystack
中首次出现的数字位置。
参数
-
haystack
在该字符串中进行查找。 -
needle
如果needle
不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。 -
offset
如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计。和strrpos()
、strripos()
不一样,这个偏移量不能是负数。
返回值
返回转换后的字符串。
返回needle
存在于haystack
字符串起始的位置(独立于 offset)。同时注意字符串位置是从0
开始,而不是从1
开始的。
如果没找到needle
,将返回FALSE
此函数可能返回布尔值
FALSE,但也可能返回等同于
FALSE的非布尔值。应使用
===运算符来测试此函数的返回值。
case
$mystring = 'abc';
$findme = 'a';
// 0 注意这里使用的是 ===。简单的 == 无法判断,因为 'a' 是第 0 位置上的(第一个)字符。
echo strpos($mystring, $findme);
$mystring = 'abc';
$findme = 'a';
// 0 使用 !== 操作符。使用 != 无法判断,因为 'a' 的位置是 0。语句 (0 != false) 的结果是 false。
echo strpos($mystring, $findme);
// 忽视位置偏移量之前的字符进行查找
$newstring = 'abcdef abcdef';
// $pos = 7, 不是 0
echo strpos($newstring, 'a', 1);
stripos
说明
strpos()
忽略大小写
strrpos
说明
返回字符串haystack
中needle
最后一次出现的数字位置。其它同strpos()
strripos
说明
strrpos()
忽略大小写
strlen
说明
strlen ( string $string )
返回给定的字符串string
的长度。
参数
- string
需要计算长度的字符串。
返回值
成功则返回字符串string
的长度;如果string
为空,则返回0
。
case
$str = 'abcdef';
echo strlen($str); // 6
array_combin
说明
array_combine ( array $keys , array $values )
返回一个array
,用来自keys
数组的值作为键名
,来自values
数组的值作为相应的值
。
参数
- keys
将被作为新数组的键。非法的值将会被转换为字符串类型( string )
。
- values
将被作为数组的值。
返回值
返回合并的array
,如果两个数组的单元数不同则返回FALSE
并且抛出E_WARNING
。
case
$a = array( 'green' , 'red' , 'yellow' );
$b = array( 'avocado' , 'apple' , 'banana' );
// array(3) { ["green"]=> string(7) "avocado" ["red"]=> string(5) "apple" ["yellow"]=> string(6) "banana" }
var_dump(array_combine ( $a , $b ));
$b = array( 'avocado' , 'apple' );
//Warning: array_combine(): Both parameters should have an equal number of elements
//bool(false)
var_dump(array_combine ( $a , $b ));
range
说明
range( mixed $start , mixed $limit [, number $step = 1 ] )
建立一个包含指定范围单元的数组。
参数
- start
序列的第一个值。
-
limit
序列结束于 limit 的值。 -
step
如果给出了step
的值,它将被作为单元之间的步进值。step
应该为正值。如果未指定,step
则默认为1
。
返回值
返回的数组中从 start 到 limit 的单元,包括它们本身。
case
// array(6) { [0]=> int(0) [1]=> int(1) [2]=> int(2) [3]=> int(3) [4]=> int(4) [5]=> int(5) }
var_dump(range ( 0 , 5 ));
// array(3) { [0]=> int(0) [1]=> int(2) [2]=> int(4) }
var_dump(range ( 0 , 5,2 ));
// array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }
var_dump(range ( 'a' , 'd' ));
// array(2) { [0]=> string(1) "a" [1]=> string(1) "c" }
var_dump(range ( 'a' , 'd',2 ));
array_fill
说明
array_fill ( int $start_index , int $num , mixed $value )
用value
参数的值将一个数组填充num
个条目,键名由start_index
参数指定的开始。
参数
- start_index
返回的数组的第一个索引值。
如果start_index
是负数,那么返回的数组的第一个索引将会是start_index
,而后面索引则从0
开始。
-
num
插入元素的数量。必须大于0
-
value
用来填充的值。
返回值
返回填充后的数组。
错误/异常
如果 num 少于一个,将会抛出 E_WARNING 。
case
// array(2) { [5]=> string(6) "banana" [6]=> string(6) "banana" }
var_dump(array_fill ( 5 , 2 , 'banana' ));
// array(4) { [-2]=> string(4) "pear" [0]=> string(4) "pear" [1]=> string(4) "pear" [2]=> string(4) "pear" }
var_dump(array_fill (- 2 , 4 , 'pear' ));
array_chunk
说明
array_chunk ( array $input , int $size [, bool $preserve_keys = false ] )
将一个数组分割成多个数组,其中每个数组的单元数目由size
决定。最后一个数组的单元数目可能会少于size
个。
参数
- input
需要操作的数组
-
size
每个数组的单元数目 -
preserve_keys
设为TRUE
,可以使 PHP 保留输入数组中原来的键名。如果你指定了FALSE
,那每个结果数组将用从0
开始的新数字索引。默认值是FALSE
。
返回值
得到的数组是一个多维数组中的单元,其索引从零开始,每一维包含了size
个元素。
错误/异常
如果size
小于1
,会抛出一个E_WARNING
错误并返回NULL
。
case
$input_array = array( 'a' , 'b' , 'c' , 'd' , 'e' );
// array(3) { [0]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } [1]=> array(2) { [0]=> string(1) "c" [1]=> string(1) "d" } [2]=> array(1) { [0]=> string(1) "e" } }
var_dump ( array_chunk ( $input_array , 2 ));
// array(3) { [0]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } [1]=> array(2) { [2]=> string(1) "c" [3]=> string(1) "d" } [2]=> array(1) { [4]=> string(1) "e" } }
var_dump ( array_chunk ( $input_array , 2 , true ));
array_merge
说明
array_merge ( array $array1 [, array $… ] )
array_merge()
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同
的字符串键名,则该键名后面的值将覆盖
前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加
到后面。
如果只给了一个
数组并且该数组是数字
索引的,则键名会以连续方式重新索引
。
参数
- array1
要合并的初始数组
- …
要合并的数组的变量列表。
返回值
返回结果数组。
case
$array1 = array( "color" => "red" , 2 , 4 );
$array2 = array( "a" , "b" , "color" => "green" , "shape" => "trapezoid" , 4 );
// array(7) { ["color"]=> string(5) "green" [0]=> int(2) [1]=> int(4) [2]=> string(1) "a" [3]=> string(1) "b" ["shape"]=> string(9) "trapezoid" [4]=> int(4)
var_dump(array_merge ( $array1 , $array2 ));
array_slice
说明
array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
返回根据offset
和length
参数所指定的array
数组中的一段序列。
参数
- array
输入的数组。
- offset
如果offset
非负,则序列将从array
中的此偏移量开始。如果offset
为负,则序列将从array
中距离末端这么远的地方开始。
- length
如果给出了length
并且为正,则序列中将具有这么多的单元。如果给出了length
并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从offset
开始一直到array
的末端。
- preserve_keys
默认会重新排序并重置数组的数字索引。可以通过将preserve_keys
设为TRUE
来改变此行为。
返回值
返回结果数组。
case
$input = array( "a" , "b" , "c" , "d" , "e" );
$output = array_slice ( $input , 2 ); // returns "c", "d", and "e"
$output = array_slice ( $input , - 2 , 1 ); // returns "d"
$output = array_slice ( $input , 0 , 3 ); // returns "a", "b", and "c"
/**
Array
(
[0] => c
[1] => d
)
*/
print_r ( array_slice ( $input , 2 , - 1 ));
/**
/**
Array
(
[2] => c
[3] => d
)
*/
*/
print_r ( array_slice ( $input , 2 , - 1 , true ));
array_diff
说明
array_diff ( array $array1 , array $array2 [, array $… ] )
对比返回在array1
中但是不在array2
及任何其它参数数组中的值。
参数
- array1
要被对比的数组
- array2
和这个数组进行比较
- …
更多相比较的数组
返回值
返回一个数组,该数组包括了所有在array1
中但是不在任何其它参数数组中的值。注意键名保留不变
。
case
$array1 = array( "a" => "green" , "red" , "blue" , "red" );
$array2 = array( "b" => "green" , "yellow" , "red" );
/**
Array
(
[1] => blue
)
*/
print_r(array_diff ( $array1 , $array2 ));
array_intersect
说明
array_intersect ( array $array1 , array $array2 [, array $ … ] )
array_intersect()
返回一个数组,该数组包含了所有在array1
中也同时出现在所有其它参数数组中的值。注意键名保留不变
。
参数
- array1
要被对比的数组
- array2
和这个数组进行比较
- …
更多相比较的数组
返回值
返回一个数组,该数组包含了所有在array1
中也同时出现在所有其它参数数组中的值。
case
$array1 = array( "a" => "green" , "red" , "blue" , "red" );
$array2 = array( "b" => "green" , "yellow" , "red" );
/**
Array
(
[a] => green
[0] => red
)
*/
print_r(array_intersect ( $array1 , $array2 ));
array_search
说明
array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
在haystack
中搜索needle
参数。
参数
- needle
搜索的值
如果
needle是字符串,则比较以
区分大小写的方式进行。
- haystack
这个数组。
- strict
如果可选的第三个参数strict
为TRUE
,则array_search()
将在haystack
中检查完全相同
的元素。这意味着同样检查haystack
里needle
的类型
,并且对象需是同一个实例。
返回值
如果找到了needle
则返回它的键,否则返回FALSE
。
如果needle
在haystack
中出现不止一次,则返回第一个
匹配的键。要返回所有匹配值的键,应该用array_keys()
加上可选参数search_value
来代替。
此函数可能返回布尔值
FALSE
,但也可能返回等同于FALSE
的非布尔值。
case
$array = array( 0 => 'blue' , 1 => 'red' , 2 => 'green' , 3 => 'red' );
$key = array_search ( 'green' , $array ); // $key = 2;
$key = array_search ( 'red' , $array ); // $key = 1;
array_splice
说明
array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement ]] )
把input
数组中由offset
和length
指定的单元去掉,如果提供了replacement
参数,则用其中的单元取代
。
input中的数字键名不被保留。
参数
- input
输入的数组。
- offset
如果offset
为正
,则从input
数组中该值指定的偏移量开始移除。如果offset
为负
,则从input
末尾倒数该值指定的偏移量开始移除。
- length
如果省略length
,则移除数组中从offset
到结尾的所有部分。如果指定了length
并且为正值
,则移除这么多单元。如果指定了length
并且为负值
,则移除从offset
到数组末尾倒数length
为止中间所有的单元。
当给出了replacement
时要移除从offset
到数组末尾所有单元时,用count($input)
作为length
。
- replacement
如果给出了replacement
数组,则被移除的单元被此数组中的单元替代。
如果offset
和length
的组合结果是不会移除任何值,则replacement
数组中的单元将被插入到offset
指定的位置。 注意替换数组中的键名不保留
。
如果用来替换replacement
只有一个单元,那么不需要给它加上array()
,除非该单元本身就是一个数组
、一个对象
或者NULL
。
返回值
返回一个包含有被移除单元的数组。
case
$input = array( "red" , "green" , "blue" , "yellow" );
array_splice ( $input , 2 );
// $input is now array("red", "green")
$input = array( "red" , "green" , "blue" , "yellow" );
array_splice ( $input , 1 , - 1 );
// $input is now array("red", "yellow")
$input = array( "red" , "green" , "blue" , "yellow" );
array_splice ( $input , 1 , count ( $input ), "orange" );
// $input is now array("red", "orange")
$input = array( "red" , "green" , "blue" , "yellow" );
array_splice ( $input , - 1 , 1 , array( "black" , "maroon" ));
// $input is now array("red", "green",
// "blue", "black", "maroon")
$input = array( "red" , "green" , "blue" , "yellow" );
array_splice ( $input , 3 , 0 , "purple" );
// $input is now array("red", "green",
// "blue", "purple", "yellow");
array_sum
说明
array_sum ( array $array )
将数组中的所有值的和以整数或浮点数的结果返回。
参数
- array
输入的数组。
返回值
所有值的和以整数或浮点数的结果返回。
case
// 20
$a = array( 2 , 4 , 6 , 8 );
// 6.9
$b = array( "a" => 1.2 , "b" => 2.3 , "c" => 3.4 );
in_array
说明
in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
检查数组中是否存在某个值
参数
- needle
待搜索的值。 如果needle
是字符串,则比较是区分大小
写的。
- haystack
这个数组。
- strict
如果第三个参数strict
的值为TRUE
则检查needle
的类型是否和haystack
中的相同。
返回值
如果找到needle
则返回TRUE
,否则返回FALSE
。
case
$os = array( "Mac" , "NT" , "Irix" , "Linux" );
// bool(true)
var_dump(in_array ( "Irix" , $os ));
$a = array( '1.10' , 12.4 , 1.13 );
// bool(false)
var_dump(in_array ( '12.4' , $a , true ));
next
说明
next ( array &$array )
将数组中的内部指针向前移动一位
参数
- array
受影响的array
。
返回值
返回数组内部指针指向的下一个单元的值,或当没有更多单元时返回 FALSE 。
Warning
此函数可能返回布尔值 FALSE ,但也可能返回等同于 FALSE 的非布尔值。
prev
说明
prev ( array &$array )
将数组的内部指针倒回一位
参数
- array
受影响的array
。
返回值
返回数组内部指针指向的前一个单元的值,或当没有更多单元时返回 FALSE 。
Warning
此函数可能返回布尔值 FALSE ,但也可能返回等同于 FALSE 的非布尔值。
reset
说明
reset ( array &$array )
将数组的内部指针指向第一个单元
参数
- array
受影响的array
。
返回值
返回数组第一个单元的值,如果数组为空则返回 FALSE 。
end
说明
end ( array &$array )
将数组的内部指针指向最后一个单元
参数
- array
受影响的array
。
返回值
返回数组第一个单元的值,如果数组为空则返回 FALSE 。
list
说明
list ( mixed $varname [, mixed $… ] )
把数组中的值赋给一些变量(语言结构)
参数
- varname
变量
返回值
返回指定的数组。回 FALSE 。
case
$info = array( 'coffee' , 'brown' , 'caffeine' );
// 列出所有变量
list( $drink , $color , $power ) = $info ;
// 列出他们的其中一个
list( $drink , , $power ) = $info ;
// 或者让我们跳到仅第三个
list( , , $power ) = $info ;
// list() 不能对字符串起作用
list( $bar ) = "abcde" ;
var_dump ( $bar ); // NULL
array_shift
说明
array_shift ( array &$array )
将array
的第一个单元移出并作为结果返回,将array
的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始
计数,文字键名将不变。
参数
- array
输入的数组。
返回值
返回移出的值,如果array
为空
或不是一个数组
则返回NULL
。
case
$stack = array( "orange" , "banana" , "apple" , "raspberry" );
$fruit = array_shift ( $stack );
/**
Array
(
[0] => banana
[1] => apple
[2] => raspberry
)
*/
// 并且 orange 被赋给了 $fruit 。
print_r ( $stack );
array_pop
说明
array_pop ( array &$array )
弹出并返回array
数组的最后一个单元,并将数组array
的长度减一。如果array
为空(或者不是数组)
将返回NULL
。此外如果被调用不是一个数组
则会产生一个Warning
。
参数
- array
需要做出栈的数组。
返回值
返回移出的值,如果array
为空
或不是一个数组
则返回NULL
。
case
$stack = array( "orange" , "banana" , "apple" , "raspberry" );
$fruit = array_pop ( $stack );
/**
Array
(
[0] => orange
[1] => banana
[2] => apple
)
*/
// 并且 rasberry 将被赋给 $fruit 。
print_r ( $stack );
array_unshift
说明
array_unshift ( array &$array , mixed $var [, mixed $… ] )
将传入的单元插入到array
数组的开头。注意单元是作为整体
被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始
重新计数,所有的文字键名保持不变。
参数
- array
输入的数组。
- var
开头插入的变量。
返回值
返回 array 数组新的单元数目。
case
$queue = array( "orange" , "banana" );
// 4
echo array_unshift ( $queue , "apple" , "raspberry" );
array_push
说明
array_push ( array &$array , mixed $var [, mixed $… ] )
将array
当成一个栈,并将传入的变量压入array
的末尾。array
的长度将根据入栈变量的数目增加。
参数
- array
输入的数组。
- var
要压入的值。
返回值
返回处理之后数组的元素个数。。
case
$stack = array( "orange" , "banana" );
// 4
echo array_push ( $stack , "apple" , "raspberry" );
shuffle
说明
shuffle ( array &$array )
将数组打乱
参数
- array
输入的数组。
返回值
成功时返回TRUE
, 或者在失败时返回FALSE
。
count
说明
count ( mixed $var [, int $mode = COUNT_NORMAL ] )
计算数组中的单元数目或对象中的属性个数
参数
- var
数组或者对象。
- mode
如果可选的mode
参数设为1
,count()
将递归
地对数组计数。对计算多维数组的所有单元尤其有用。mode
的默认值是0
。count()
识别不了无限递归。
返回值
返回var
中的单元数目。如果var
不是数组类型或者实现了Countable
接口的对象,将返回1
,如果var
是NULL
则结果是0
。count()
对没有初始化
的变量返回0
,但对于空数组
也会返回0
。
case
$b [ 0 ] = 7 ;
$b [ 5 ] = 9 ;
$b [ 10 ] = 11 ;
// 3
echo count ( $b );
// 0
echo count ( null );
// 1
echo count ( false );
$food = array( 'fruits' => array( 'orange' , 'banana' , 'apple' ),
'veggie' => array( 'carrot' , 'collard' , 'pea' ));
// 8
echo count ( $food , COUNT_RECURSIVE );
// 2
echo count ( $food );
array_flip
说明
array_flip ( array $trans )
array_flip()
返回一个反转后的array
注意trans
中的值
需要能够作为合法
的键名
,如果值的类型不对将发出一个警告
,并且有问题的键/值
对将不会反转
。
如果同一个值
出现了多次,则覆盖前面的。
参数
- trans
要交换键/值对的数组。
返回值
成功时返回交换后的数组,如果失败返回NULL
。
case
$trans = array( "a" => 1 , "b" => 1 , "c" => 2 );
$trans = array_flip ( $trans );
/**
Array
(
[1] => b
[2] => c
)
*/
var_dump ( $trans );
array_keys
说明
array_keys ( array $array [, mixed $search_value [, bool $strict = false ]] )
返回数组中部分的或所有的键名
参数
- input
一个数组,包含了要返回的键。
- search_value
如果指定了这个参数,只有包含这些值的键才会返回。
- strict
判断在搜索的时候是否该使用严格的比较(===)
。
返回值
返回input
里的所有键。
case
$array = array( 0 => 100 , "color" => "red" );
/**
Array
(
[0] => 0
[1] => color
)
*/
print_r ( array_keys ( $array ));
$array = array( "blue" , "red" , "green" , "blue" , "blue" );
/**
Array
(
[0] => 0
[1] => 3
[2] => 4
)
*/
print_r ( array_keys ( $array , "blue" ));
$array = array( "color" => array( "blue" , "red" , "green" ),
"size" => array( "small" , "medium" , "large" ));
/**
Array
(
[0] => color
[1] => size
)
*/
print_r ( array_keys ( $array ));
array_values
说明
array_values ( array $input )
返回数组中所有的值并给其建立数字
索引。
参数
- input
数组。
返回值
返回含所有值的索引数组。
case
$array = array( "size" => "XL" , "color" => "gold" );
/**
Array
(
[0] => XL
[1] => gold
)
*/
print_r ( array_values ( $array ));
array_count_values
说明
array_count_values ( array $input )
统计数组中所有的值出现的次数
参数
- input
数组。
返回值
返回一个关联数组,用input
数组中的值作为键名,该值在数组中出现的次数作为值。
错误/异常
对数组里面的每个不是string
和integer
类型的元素抛出一个警告错误( E_WARNING )
。
case
$array = array( 1 , "hello" , 1 , "world" , "hello" );
/**
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
*/
print_r ( array_count_values ( $array ));
array_reverse
说明
array_reverse ( array $array [, bool $preserve_keys = false ] )
返回一个单元顺序相反的数组
参数
- array
数组。
- preserve_keys
如果设置为TRUE
会保留数字的键
。非数字的键则不受这个设置的影响,总是会被保留。
返回值
返回反转后的数组。
case
$input = array( "php" , 4.0 , array( "green" , "red" ));
/**
Array
(
[0] => Array
(
[0] => green
[1] => red
)
[1] => 4
[2] => php
)
*/
$result = array_reverse ( $input );
/**
Array
(
[2] => Array
(
[0] => green
[1] => red
)
[1] => 4
[0] => php
)
*/
$result_keyed = array_reverse ( $input , true );
array_rand
说明
array_rand ( array $input [, int $num_req = 1 ] )
从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。
参数
- input
输入的数组。
- num_req
取出多少个单元。如果指定的数目超过
数组里的数量将会产生一个E_WARNING
级别的错误。
返回值
只取出一个,返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。
case
$input = array( "Neo" , "Morpheus" , "Trinity" , "Cypher" , "Tank" );
// array(2) { [0]=> int(3) [1]=> int(4) }
var_dump(array_rand ( $input , 2 ));
array_unique
说明
array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
移除数组中重复的值
注意键名保留不变
。 array_unique()
先将值作为字符串排序
,然后对每个值只保留第一个
遇到的键名,接着忽略
所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。
当且仅当(string) $elem1 === (string) $elem2
时两个单元被认为相同
。就是说,当字符串的表达一样时。第一个单元将被保留。
参数
- input
输入的数组。
返回值
返回已筛选的数组。
case
$input = array( "a" => "green" , "red" , "b" => "green" , "blue" , "red" );
$result = array_unique ( $input );
/**
Array
(
[a] => green
[0] => red
[1] => blue
)
*/
print_r ( $result );
sort
说明
升序对数组值进行排序,不保留键名
参数
- array
输入的数组。
返回值
成功时返回TRUE
, 或者在失败时返回FALSE
。
case
$arr = array( "lemon" , "orange" , "banana" , "apple" );
sort($arr);
// array(4) { [0]=> string(5) "apple" [1]=> string(6) "banana" [2]=> string(5) "lemon" [3]=> string(6) "orange" }
var_dump($arr);
rsort
说明
降序对数组值进行排序,不保留键名
参数
- array
输入的数组。
返回值
成功时返回TRUE
, 或者在失败时返回FALSE
。
$arr = array( "lemon" , "orange" , "banana" , "apple" );
rsort($arr);
// array(4) { [0]=> string(6) "orange" [1]=> string(5) "lemon" [2]=> string(6) "banana" [3]=> string(5) "apple" }
var_dump($arr);
asort
说明
升序对数组值进行排序
参数
- array
输入的数组。
返回值
成功时返回TRUE
, 或者在失败时返回FALSE
。
$arr = array( "d" => "lemon" , "a" => "orange" , "b" => "banana" , "c" => "apple" );
asort($arr);
// array(4) { ["c"]=> string(5) "apple" ["b"]=> string(6) "banana" ["d"]=> string(5) "lemon" ["a"]=> string(6) "orange" }
var_dump($arr);
arsort
说明
降序对数组值进行排序
参数
- array
输入的数组。
返回值
成功时返回TRUE
, 或者在失败时返回FALSE
。
$arr = array( "d" => "lemon" , "a" => "orange" , "b" => "banana" , "c" => "apple" );
arsort($arr);
// array(4) { ["a"]=> string(6) "orange" ["d"]=> string(5) "lemon" ["b"]=> string(6) "banana" ["c"]=> string(5) "apple" }
var_dump($arr);
ksort
说明
升序对数组键进行排序
参数
- array
输入的数组。
返回值
成功时返回TRUE
, 或者在失败时返回FALSE
。
$arr = array( "d" => "lemon" , "a" => "orange" , "b" => "banana" , "c" => "apple" );
ksort($arr);
// array(4) { ["a"]=> string(6) "orange" ["b"]=> string(6) "banana" ["c"]=> string(5) "apple" ["d"]=> string(5) "lemon" }
var_dump($arr);
krsort
说明
降序对数组键进行排序
参数
- array
输入的数组。
返回值
成功时返回TRUE
, 或者在失败时返回FALSE
。
$arr = array( "d" => "lemon" , "a" => "orange" , "b" => "banana" , "c" => "apple" );
krsort($arr);
// array(4) { ["d"]=> string(5) "lemon" ["c"]=> string(5) "apple" ["b"]=> string(6) "banana" ["a"]=> string(6) "orange" }
var_dump($arr);
natsort
说明
用自然顺序对数组进行排序
参数
- array
输入的数组。
返回值
成功时返回TRUE
, 或者在失败时返回FALSE
。
$arr = array( "img12.png" , "img10.png" , "img2.png" , "img1.png" );
natsort($arr);
// array(4) { [3]=> string(8) "img1.png" [2]=> string(8) "img2.png" [1]=> string(9) "img10.png" [0]=> string(9) "img12.png" }
var_dump($arr);
natcasesort
说明
用自然顺序对数组进行排序,不区分大小写
参数
- array
输入的数组。
返回值
成功时返回TRUE
, 或者在失败时返回FALSE
。
$arr = array( 'IMG0.png' , 'img12.png' , 'img10.png' , 'img2.png' , 'img1.png' , 'IMG3.png' );
natcasesort($arr);
// array(6) { [0]=> string(8) "IMG0.png" [4]=> string(8) "img1.png" [3]=> string(8) "img2.png" [5]=> string(8) "IMG3.png" [2]=> string(9) "img10.png" [1]=> string(9) "img12.png" }
var_dump($arr);
array_change_key_case
说明
array_change_key_case ( array $input [, int $case = CASE_LOWER ] )
将数组中的所有键名改为全小写或大写。改变是根据后一个选项case
参数来进行的。本函数不改变数字索引。
参数
- input
输入的数组。
- case
可以在这里用两个常量,CASE_UPPER
或CASE_LOWER
(默认值)。
返回值
返回一个键全是小写或者全是大写的数组;如果输入值(input)不是一个数组,那么返回FALSE
错误/异常
如果输入值(input)不是一个数组,就会抛出一个错误警告( E_WARNING )
。
case
$input_array = array( "FirSt" => 1 , "SecOnd" => 4 );
/**
Array ( [FIRST] => 1 [SECOND] => 4 )
*/
print_r ( array_change_key_case ( $input_array , CASE_UPPER ));
array_fill_keys
说明
array_fill_keys ( array $keys , mixed $value )
使用value
参数的值作为值,使用keys
数组的值作为键来填充一个数组。
参数
- keys
使用该数组的值作为键。非法值将被转换为字符串
。
- value
填充使用的值。
返回值
返回填充后的数组。
case
$keys = array( 'foo' , 5 , 10 , 'bar' );
$a = array_fill_keys ( $keys , 'banana' );
// Array ( [foo] => banana [5] => banana [10] => banana [bar] => banana )
print_r ( $a );
array_filter
说明
array_filter ( array $input [, callable $callback = “” ] )
依次将input
数组中的每个值传递到callback
函数。如果callback
函数返回TRUE
,则input
数组的当前值会被包含在返回的结果数组中。数组的键名保留不变
。
参数
- input
要循环的数组
- callback
如果没有提供callback
函数,将删除input
中所有等值为FALSE
的条目。
返回值
返回过滤后的数组。
case
function odd ( $var )
{
// returns whether the input integer is odd
return( $var & 1 );
}
function even ( $var )
{
// returns whether the input integer is even
return(!( $var & 1 ));
}
$array1 = array( "a" => 1 , "b" => 2 , "c" => 3 , "d" => 4 , "e" => 5 );
$array2 = array( 6 , 7 , 8 , 9 , 10 , 11 , 12 );
/**
Array ( [a] => 1 [c] => 3 [e] => 5 )
*/
print_r ( array_filter ( $array1 , "odd" ));
/**
Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )
*/
print_r ( array_filter ( $array2 , "even" ));
array_product
说明
array_product ( array $array )
以整数
或浮点数
返回一个数组中所有值的乘积
。
参数
- array
这个数组。
返回值
以整数或浮点数返回一个数组中所有值的乘积。
case
// 384
echo array_product(array( 2 , 4 , 6 , 8 ));
// 1
echo array_product(array());