PHP将一个数组映射到另一个数组但具有不同的键位置

时间:2015-04-07 08:53:06

标签: php arrays

我想在两个具有不同形状的数组中映射值,如下所示:

$array1=array(
    1=>array(1=>'apple', 2=>'banana', 3=>'cherry'),
    2=>array(1=>'david', 2=>'eddie', 3=>'frank'),
);

现在:

$array2=array(
    1=>'apple',
    2=>'banana',
    3=>'cherry',
    4=>'david',
    5=>'eddie',
    6=>'frank',
);

例如,当$ array1 [2] [3]的值从frank更改为paula时,$ array2 [6]的值也会发生类似的变化。

我该怎么做?注意:一旦声明,密钥的数量不会改变。

3 个答案:

答案 0 :(得分:1)

请使用数组合并,以下是它将如何帮助您。

<?php
$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));
?>

将输出,

Array ( [0] => red [1] => green [2] => blue [3] => yellow )

了解详情,http://php.net/manual/en/function.array-merge.php

答案 1 :(得分:1)

<?php


$array1=array(
    1=>array(1=>'apple', 2=>'banana', 3=>'cherry'),
    2=>array(1=>'david', 2=>'eddie', 3=>'frank'),
);
$op = array();

foreach($array1 as $key =>$index){
    $op =array_merge($array1[1],$array1[2]);
}

print_r(  $op);
?>

使用array_merge合并两个数组

答案 2 :(得分:1)

您是否可以自由地以另一种方式构建$array2? 如果你这样做,那么你就可以了解'链接'数组:

<?php

$array1=array(
    1=>array(1=>'apple', 2=>'banana', 3=>'cherry'),
    2=>array(1=>'david', 2=>'eddie', 3=>'frank'),
);
$array2=array(
    1=>'apple',
    2=>'banana',
    3=>'cherry',
    4=>'david',
    5=>'eddie',
    // Assign by reference $array1[2][3] (currently holding 'frank')
    6=>&$array1[2][3],
);
// This will print the initial state of $array2
echo '<pre>';print_r( $array2 );echo '</pre>';
// Now change the value in $array1
$array1[2][3] = 'paula';
// And since $array2 'points' to the same memory location it will get
// changed too (well technically it won't but that's not important)
echo '<pre>';print_r( $array2 );echo '</pre>';

有关按推荐分配的详细信息,您可以查看this