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_STRINGSORT_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_STRINGSORT_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
)
参考

《PHP 5 Array 函数 | 菜鸟教程》

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!