数组函数20140906study

本文深入解析PHP中与数组操作相关的几个核心函数,包括array_keys、array_map、array_merge_recursive、array_merge、array_pad、array_pop、array_product、array_push、array_rand和array_replace。通过具体实例,展示每个函数的功能与实际应用,帮助开发者更高效地处理数组数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//今日内容

<?php
/*// 1、array_keys — 返回数组中所有的键名
// array array_keys ( array $input [, mixed $search_value = NULL [, bool $strict = false ]] )
// array_keys() 返回 input 数组中的数字或者字符串的键名。

$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));

$array = array("color" => array("blue", "red", "green"),
               "size"  => array("small", "medium", "large"));
print_r(array_keys($array));

结果:Array
(
    [0] => 0
    [1] => color
)
Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
Array
(
    [0] => color
    [1] => size
)*/
//-----------------------------------------------------------------------------------
/*// 2、array_map — 将回调函数作用到给定数组的单元上
// array array_map ( callable $callback , array $arr1 [, array $... ] )
// array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。


function cube($n)
{
    return($n * $n * $n);
}

$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);


结果:
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)*/

//----------------------------------------------------------------------------------------------

/*// 3、array_merge_recursive--递归地合并一个或多个数组
// array array_merge_recursive(array $array1[, array $... ])
// array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

// 如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。


$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);

结果:Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)*/

//-------------------------------------------------------------------------------------------------------
/*// 4、array_merge --合并一个或者多个数组
// array array_merge ( array $array1 [, array $... ] )
// array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

// 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

// 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)*/

//--------------------------------------------------------------------------------------------------
/*// 5、array_pad--用值将数组填充到指定长度
// array array_pad ( array $input , int $pad_size , mixed $pad_value )
// array_pad() 返回 input 的一个拷贝,并用 pad_value 将其填补到 pad_size 指定的长度。如果 pad_size 为正,则填补到数组的右侧,如果为负则从左侧开始填补。如果 pad_size 的绝对值小于或等于 input 数组的长度则没有任何填补。有可能一次最多填补 1048576 个单元。
$input = array(12, 10, 9);

$result = array_pad($input, 5, 0);
// result is array(12, 10, 9, 0, 0)

$result = array_pad($input, -7, -1);
// result is array(-1, -1, -1, -1, 12, 10, 9)

$result = array_pad($input, 2, "noop");
// not padded*/

//--------------------------------------------------------------------------------------------------------

/*// 6、array_pop--将数组最后一个单元弹出(出栈)
// mixed array_pop(array &$array)
// array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL。 此外如果被调用不是一个数则会产生一个 Warning。


$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);

结果:Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)*/

//-------------------------------------------------------------------------------------------------------------

/*// 7、array_product --计算数组中所有值的乘积
// number array_product (array $array)
// array_product()以整数或浮点数返回一个数组中所有的值的乘积
 
 $a=array(2,4,6,8);
 echo array_product($a);
 echo '<br>';
 echo array_product(array());

 结果:384
1*/

//--------------------------------------------------------------------------------------------------------
/*// 8、array_push --将一个或多个单元压入数组的末尾
// int array_push ( array &$array , mixed $var [, mixed $... ] )
// array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加
// 返回处理之后数组的元素个数。
$stack = array("orange", "banana");
echo array_push($stack, "apple", "raspberry").'<br>';
print_r($stack);

结果:4
Array ( [0] => orange [1] => banana [2] => apple [3] => raspberry )*/

//-------------------------------------------------------------------------------------
/*// 9、array_rand --从数组中随机取出一个或多个单元
// mixed array_rand(array $input [,int $num_req=1])
// 从数组中取出一个或多个随机的单元,并返回随机条目的一个或者键

$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";*/
//----------------------------------------------------------------------------------------
/*// 10、array_replace — 使用传递的数组替换第一个数组的元素
// array array_replace ( array $array , array $array1 [, array $... ] )
// array_replace() 函数使用后面数组元素的值替换第一个 array 数组的值。如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换。如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素。如果一个键仅存在于第一个数组,它将保持不变。如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。

// array_replace() 是非递归的:它将第一个数组的值进行替换而不管第二个数组中是什么类型。

// 返回一个数组。如果发生错误,将返回 NULL。
$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");
$replacements2 = array(0 => "grape");

$basket = array_replace($base, $replacements, $replacements2);
print_r($basket);

结果:Array
(
    [0] => grape
    [1] => banana
    [2] => apple
    [3] => raspberry
    [4] => cherry
)*/

?>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值