2015-04-07 64 views
1

我想圖,其中具有不同形狀的兩個數組值的不同的關鍵位置,如下所示: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', 
    6=>'frank', 
); 

,使得當例如,$ array1 [2] [3]的值從frank更改爲paula,則$ array2 [6]的值也會相應地更改。

我該怎麼做?注意:一旦申報,鑰匙的數量不會改變。

+1

使用array_merge –

+2

如果你想保留兩個數組結構同步,那麼只要$ array1發生更改,就必須重新生成$ array2。一個*可以*使用引用,但這需要手動構建數組。自動映射它的虛擬'ArrayObject'可能是另一種選擇。 – mario

+0

@SunilPachlangia,array_merge不會同步 –

回答

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

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
<?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合併兩個數組

+0

這不是很有用的東西。它被硬編碼爲1和2,並且合併不會創建一個像第一個那樣變化的數組。 @mrun的帖子是正確的。 –

相關問題