繁体   English   中英

PHP array_merge()函数

[英]PHP array_merge() function

使用array_merge function处理arrays遇到一些问题。 这里是一个例子:

第一个例子:

 $first = array('01' => 1, '03' => 73);
 $second = array('14'=>11, '15' => 23);
 var_dump(array_merge($first, $second));

结果是:

array(4) { ["01"]=> int(1) ["03"]=> int(73) [0]=> int(11) [1]=> int(23) } 

预期:

array(4) { ["01"]=> int(1) ["03"]=> int(73) [14]=> int(11) [15]=> int(23) } 

第二个例子:

 $first = array('01'=>3, '03'=>10);
 $second = array('05'=>44, '07'=>3);
 var_dump(array_merge($first,$second));

结果是(按预期):

array(4) { ["01"]=> int(3) ["03"]=> int(10) ["05"]=> int(44) ["07"]=> int(3) }

第三个例子:

var_dump(array_merge(array("somekey"=> array("some value"))));

结果是(按预期):

array(1) { ["somekey"]=> array(1) { [0]=> string(10) "some value" } } 

第四个例子:

var_dump(array_merge(array("34"=> array("some value"))));

结果是:

array(1) { [0]=> array(1) { [0]=> string(10) "some value" } } 

预期:

array(1) { [0]=> array(1) { ["34"]=> string(10) "some value" } } 

var_dump(array_merge(array("34"=> array("some value"))));

thirdfourth示例中可以看到,我为键设置了字符串,但结果与预期不符。

什么是理解上的错误或不正确? 感谢您的帮助。

编辑。 为什么(示例第一和第二个)结果不同,但是键是字符串并且仅由摘要组成?

从手册中引用:

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个。 但是,如果数组包含数字键,则后面的值将不会覆盖原始值,而是将其附加。

使用数字键的输入数组中的值将使用从结果数组中的零开始的递增键重新编号。

具有前导零的键被视为字符串,而没有前导零的数字键被视为数字

如果要完全保留密钥,请执行以下操作:

$first = array('01' => 1, '03' => 73);
$second = array('14'=>11, '15' => 23);
var_dump(
    array_combine(
        array_merge(
            array_keys($first), array_keys($second)
        ),
        array_merge(
            $first, $second
        )
    )
);

只要键在$ first和$ second之间是唯一的

定义:将一个或多个数组的元素合并在一起,以便将一个数组的值附加到前一个数组的末尾。 它返回结果数组。

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个。 但是,如果数组包含数字键,则后面的值将不会覆盖原始值,而是将其附加。

使用数字键的输入数组中的值将使用从结果数组中的零开始的递增键重新编号。

输入

 <?php
    $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
)

希望能帮助到你:)

尝试使用array_merge()如下:

$first = array('01' => 1, '03' => 73);
$second = array('14'=>11, '15' => 23);
$output = array_merge($first, $second);
print_r($output);

编辑:-

$first = array('01' => 1, '03' => 73);
$second = array('14'=>11, '15' => 23);
$output = $first + $second;
print_r($output);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM