PHP 第二周函数学习记录
array_pad()
作用
函数将指定数量的带有指定值的元素插入到数组中。
用法
array_pad(array, size, value)
测试案例
$a=array("red", "green");
print_r(array_pad($a, 5, "blue"));
结果
Array (
[0] => red
[1] => green
[2] => blue
[3] => blue
[4] => blue
)
array_pop()
作用
函数删除数组中的最后一个元素。
用法
array_pop(array)
测试案例
$a=array("red", "green", "blue");
array_pop($a);
print_r($a);
结果
Array (
[0] => red
[1] => green
)
array_product()
作用
数计算并返回数组的乘积。
用法
array_product(array)
测试案例
$a=array(5, 5, 2, 10);
echo(array_product($a));
结果
500
array_push()
作用
向数组尾部插入一个或多个元素
用法
array_push(array, value1, value2...)
测试案例
$a=array("a"=>"red", "b"=>"green");
array_push($a, "blue", "yellow");
print_r($a);
结果
Array (
[a] => red
[b] => green
[0] => blue
[1] => yellow
)
array_rand()
作用
函数返回数组中的一个随机键名,或者如果指定函数返回键名不只一个,则返回一个包含随机键名的数组
用法
array_rand(array, number)
测试案例
$a=array("a"=>"red", "b"=>"green", "c"=>"blue", "d"=>"yellow");
print_r(array_rand($a, 2));
结果
Array (
[0] => a
[1] => b
)
array_reduce()
作用
函数发送数组中的值到用户自定义函数,并返回一个字符串
用法
array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )
initial 如果指定了可选参数 `initial`,该参数将在处理开始前使用,或者当处理结束,数组为空时的最后一个结果
callback 函数
callback ( mixed $carry , mixed $item )
carry 携带上次迭代里的值; 如果本次迭代是第一次,那么这个值是 initial。
item 携带了本次迭代的值。
测试案例
function myfunction($v1,$v2)
{
echo 'v1:';
print_r($v1);
echo "<br>";
echo 'v2:';
print_r($v2);
echo "<br>";
return $v1 . "-" . $v2;
}
$a=array('a'=>"Dog",'b'=>"Cat",'c'=>"Horse", 'a');
print_r(array_reduce($a,"myfunction"));
echo "<br>";
echo "------------------------------------";
echo "<br>";
print_r(array_reduce($a,"myfunction", 5));
结果
v1:
v2:Dog
v1:-Dog
v2:Cat
v1:-Dog-Cat
v2:Horse
v1:-Dog-Cat-Horse
v2:a
-Dog-Cat-Horse-a
------------------------------------
v1:5
v2:Dog
v1:5-Dog
v2:Cat
v1:5-Dog-Cat
v2:Horse
v1:5-Dog-Cat-Horse
v2:a
5-Dog-Cat-Horse-a
测试案例2
function sum($carry, $item)
{
$carry += $item;
return $carry;
}
$a = array(1, 2, 3, 4, 5);
print_r(array_reduce($a, "sum"));
结果2
15
array_replace()
作用
使用后面数组的值替换第一个数组的值
用法
array_replace(array1,array2,array3...)
测试案例
$a1=array("a"=>"red", "green");
$a2=array("a"=>"orange", "b"=>"burgundy");
print_r(array_replace($a1, $a2));
结果
Array (
[a] => orange
[0] => green
[b] => burgundy
)
array_replace_recursive()
作用
函数递归地使用后面数组的值替换第一个数组的值
用法
array_replace_recursive(array1,array2,array3...)
测试案例
$a1=array(
"a"=>array("red"),
"b"=>array("green","blue"),
);
$a2=array(
"a"=>array("yellow"),
"b"=>array("black")
);
$result=array_replace_recursive($a1,$a2);
print_r($result);
$result=array_replace($a1,$a2);
print_r($result);
结果
Array (
[a] => Array (
[0] => yellow
)
[b] => Array (
[0] => black
[1] => blue
)
)
Array (
[a] => Array (
[0] => yellow
)
[b] => Array (
[0] => black
)
)
array_reverse()
作用
函数返回翻转顺序的数组。
用法
array_reverse(array,preserve)
preserve 可选。规定是否保留原始数组的键名。
如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。
可能的值:true false
测试案例
$a=array("Volvo","XC90",array("BMW","Toyota"));
$reverse=array_reverse($a);
$preserve=array_reverse($a,true);
print_r($a);
print_r($reverse);
print_r($preserve);
结果
Array (
[0] => Volvo
[1] => XC90
[2] => Array (
[0] => BMW
[1] => Toyota
)
)
Array (
[0] => Array (
[0] => BMW
[1] => Toyota
)
[1] => XC90
[2] => Volvo
)
Array (
[2] => Array (
[0] => BMW
[1] => Toyota
)
[1] => XC90
[0] => Volvo
)
array_search()
作用
函数在数组中搜索某个键值,并返回对应的键名。
用法
array_search(value,array,strict)
测试案例
$a=array("a"=>"5","b"=>5,"c"=>"5");
echo array_search(5,$a,true);
结果
b
array_shift()
作用
函数用于删除数组中的第一个元素,并返回被删除的元素。
用法
array_shift(array)
测试案例
$a=array(0=>"red",1=>"green",2=>"blue");
echo array_shift($a);
print_r ($a);
结果
red
Array ( [0] => green [1] => blue )
array_slice()
作用
返回数组中的选定部分
用法
array_slice(array,start,length,preserve)
preserve 函数是保留键名还是重置键名
true 保留键名
false 重置键名
测试案例
$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,1,2,true));
$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,1,2,false));
结果
Array ( [1] => green [2] => blue )
Array ( [0] => green [1] => blue )
array_splice()
作用
函数从数组中移除选定的元素,并用新元素取代它。函数也将返回被移除元素的数组。
用法
array_splice(array,start,length,array)
注释:不保留替代数组中的键名。
测试案例
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"purple","b"=>"orange");
print_r(array_splice($a1,0,2,$a2));
print_r($a1);
结果
Array ( [a] => red [b] => green )
Array (
[0] => purple
[1] => orange
[c] => blue
[d] => yellow
)
array_sum()
作用
函数返回数组中所有值的和。
用法
array_sum(array)
测试案例
$a=array("a"=>52.2,"b"=>13.7,"c"=>0.9);
echo array_sum($a);
结果
66.8
array_udiff()
作用
函数用于比较两个(或更多个)数组的键值 ,并返回差集
用法
array_udiff(array1,array2,array3...,myfunction)
测试案例
function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue","yellow");
$a2=array("A"=>"red","b"=>"GREEN","yellow","black");
$a3=array("a"=>"green","b"=>"red","yellow","black");
$result=array_udiff($a1,$a2,$a3,"myfunction");
print_r($result);
结果
Array ( [c] => blue )
array_udiff_assoc()
作用
函数用于比较两个(或更多个)数组的键名和键值,并返回差集。
用法
array_udiff_assoc(array1,array2,array3...,myfunction)
测试案例
function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"blue","c"=>"green");
$result=array_udiff_assoc($a1,$a2,"myfunction");
print_r($result);
结果
Array ( [b] => green [c] => blue )
array_udiff_uassoc()
作用
函数用于比较两个(或更多个)数组的键名和键值,并返回差集。
用法
array_udiff_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)
测试案例
function myfunction_key($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
function myfunction_value($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","c"=>"green");
$result=array_udiff_uassoc($a1,$a2,"myfunction_key","myfunction_value");
print_r($result);
结果
Array ( [c] => blue )
array_uintersect()
作用
用于比较两个(或更多个)数组的键值 ,并返回交集。
用法
array_uintersect(array1,array2,array3...,myfunction)
测试案例
function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");
$result=array_uintersect($a1,$a2,"myfunction");
print_r($result);
结果
Array ( [c] => blue )
array_uintersect_assoc()
作用
函数用于比较两个(或更多个)数组的键名和键值 ,并返回交集
注释:该函数使用内建函数比较键名,使用用户自定义函数比较键值!
用法
array_uintersect_assoc(array1,array2,array3...,myfunction)
测试案例
function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"blue","c"=>"green");
$result=array_uintersect_assoc($a1,$a2,"myfunction");
print_r($result);
结果
Array ( [a] => red )
array_uintersect_uassoc()
作用
函数用于比较两个(或更多个)数组的键名和键值,并返回交集。
注释:该函数使用两个用户自定义函数进行比较;第一个函数比较键名,第二个函数比较键值!
用法
array_uintersect_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)
测试案例
function myfunction_key($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
function myfunction_value($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","c"=>"green");
$result=array_uintersect_uassoc($a1,$a2,"myfunction_key","myfunction_value");
print_r($result);
结果
Array ( [a] => red [b] => green )
array_unique()
作用
函数用于移除数组中重复的值。如果两个或更多个数组值相同,只保留第一个值,其他的值被移除。
注释:被保留的数组将保持第一个数组项的键名类型。
用法
array_unique(array)
测试案例
$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a));
结果
Array ( [a] => red [b] => green )
array_unshift()
作用
函数用于向数组插入新元素。新数组的值将被插入到数组的开头。返回元素的个数
注释:数值键名将从 0 开始,以 1 递增。字符串键名将保持不变。
用法
array_unshift(array,value1,value2,value3...)
测试案例
$a=array("a"=>"red","b"=>"green");
print_r(array_unshift($a,"blue"));
print_r($a);
结果
3
Array (
[0] => blue
[a] => red
[b] => green
)
array_values()
作用
函数返回包含数组中所有的值的数组。
用法
array_values(array)
测试案例
$a=array("Name"=>"Peter","Age"=>"41","Country"=>"USA");
print_r(array_values($a));
结果
Array (
[0] => Peter
[1] => 41
[2] => USA
)
array_walk()
作用
函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。
注释:您可以通过把用户自定义函数中的第一个参数指定为引用:&$value,来改变数组元素的值
用法
array_walk(array,myfunction,parameter...)
测试案例
function myfunction(&$value,$key)
{
$value="yellow";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
print_r($a);
结果
Array (
[a] => yellow
[b] => yellow
[c] => yellow
)
array_walk_recursive()
作用
函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。该函数与 array_walk() 函数的不同在于可以操作更深的数组(一个数组中包含另一个数组)。
用法
array_walk_recursive(array,myfunction,parameter...)
测试案例
function myfunction($value,$key)
{
echo "The key $key has the value $value<br>";
}
$a1=array("a"=>"red","b"=>"green");
$a2=array($a1,"1"=>"blue","2"=>"yellow");
array_walk_recursive($a2,"myfunction");
结果
The key a has the value red
The key b has the value green
The key 1 has the value blue
The key 2 has the value yellow
arsort()
作用
函数对关联数组按照键值进行降序排序
用法
arsort(array,sortingtype);
测试案例
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
arsort($age);
print_r($age);
结果
Array (
[Joe] => 43
[Ben] => 37
[Peter] => 35
)
asort()
作用
函数对关联数组按照键值进升序排序。
用法
asort(array,sortingtype);
测试案例
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
asort($age);
print_r($age);
结果
Array (
[Peter] => 35
[Ben] => 37
[Joe] => 43
)
compact()
作用
函数创建一个包含变量名和它们的值的数组。
注释:任何没有变量名与之对应的字符串都被略过。
用法
compact(var1,var2...)
测试案例
$firstname = "Peter";
$lastname = "Griffin";
$age = "41";
$name = array("firstname", "lastname");
$result = compact($name, "location", "age");
print_r($result);
结果
Array (
[firstname] => Peter
[lastname] => Griffin
[age] => 41
)
count()
作用
函数返回数组中元素的数目
用法
count(array,mode)
mode 0 - 默认。不计算多维数组中的所有元素。
1 - 递归地计算数组中元素的数目(计算多维数组中的所有元素)。
测试案例
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
结果
3
current()
作用
函数返回数组中的当前元素的值
用法
current(array)
测试案例
$people = array("Peter", "Joe", "Glenn", "Cleveland");
echo current($people) . "<br>";
结果
Peter
end()
作用
函数将内部指针指向数组中的最后一个元素,并输出
用法
end(array)
测试案例
$people = array("Peter", "Joe", "Glenn", "Cleveland");
echo current($people) . "<br>";
echo end($people);
结果
Peter
Cleveland
extract()
作用
函数从数组中将变量导入到当前的符号表
用法
extract(array,extract_rules,prefix)
extract_rules 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中已存在的变量名是否冲突。对不合法和冲突的键名的处理将根据此参数决定
EXTR_OVERWRITE - 默认。如果有冲突,则覆盖已有的变量。
EXTR_SKIP - 如果有冲突,不覆盖已有的变量。
EXTR_PREFIX_SAME - 如果有冲突,在变量名前加上前缀 prefix。
EXTR_PREFIX_ALL - 给所有变量名加上前缀 prefix。
EXTR_PREFIX_INVALID - 仅在不合法或数字变量名前加上前缀 prefix。
EXTR_IF_EXISTS - 仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。
EXTR_PREFIX_IF_EXISTS - 仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。
EXTR_REFS - 将变量作为引用提取。导入的变量仍然引用了数组参数的值。
测试案例
$a = "Original";
$my_array = array("a" => "Cat", "b" => "Dog", "c" => "Horse");
extract($my_array, EXTR_PREFIX_SAME, "dup");
echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a";
结果
$a = Original; $b = Dog; $c = Horse; $dup_a = Cat
in_array()
作用
搜索数组中是否存在指定的值。
用法
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
测试案例
$people = array("Peter", "Joe", "Glenn", "Cleveland", 23);
if (in_array("23", $people, TRUE))
{
echo "Match found<br>";
}
else
{
echo "Match not found<br>";
}
if (in_array("Glenn",$people, TRUE))
{
echo "Match found<br>";
}
else
{
echo "Match not found<br>";
}
if (in_array(23,$people, TRUE))
{
echo "Match found<br>";
}
else
{
echo "Match not found<br>";
}
结果
Match not found
Match found
Match found
key()
作用
函数从当前内部指针位置返回元素键名。。
用法
key(array)
测试案例
$people=array("Peter","Joe","Glenn","Cleveland");
echo "The key from the current position is: " . key($people);
结果
The key from the current position is: 0
krsort()
作用
函数对关联数组按照键名进行降序排序。
用法
krsort(array,sortingtype);
sortingtype 0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。
测试案例
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
krsort($age);
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
结果
Key=Peter, Value=35
Key=Joe, Value=43
Key=Ben, Value=37
ksort()
作用
函数对关联数组按照键名进行升序排序
用法
ksort(array,sortingtype);
sortingtype 0 = SORT_REGULAR -默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。
测试案例
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
ksort($age);
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
结果
Key=Ben, Value=37
Key=Joe, Value=43
Key=Peter, Value=35
list()
作用
函数用于在一次操作中给一组变量赋值
用法
list(var1,var2...)
测试案例
$my_array = array("Dog","Cat","Horse");
list($a, , $c) = $my_array;
echo "Here I only use the $a and $c variables.";
结果
Here I only use the Dog and Horse variables.
natcasesort()
作用
用"自然排序"算法对数组进行排序。键值保留它们原始的键名
用法
natcasesort(array)
测试案例
$temp_files = array("temp15.txt","Temp10.txt",
"temp1.txt","Temp22.txt","temp2.txt");
natsort($temp_files);
echo "Natural order: ";
print_r($temp_files);
echo "<br />";
natcasesort($temp_files);
echo "Natural order case insensitve: ";
print_r($temp_files);
结果
Natural order:
Array
(
[0] => Temp10.txt
[1] => Temp22.txt
[2] => temp1.txt
[4] => temp2.txt
[3] => temp15.txt
)
Natural order case insensitve:
Array
(
[2] => temp1.txt
[4] => temp2.txt
[0] => Temp10.txt
[3] => temp15.txt
[1] => Temp22.txt
)
参考
本作品采用《CC 协议》,转载必须注明作者和本文链接