2017-03-08 25 views
-1

請幫助我,我有阿雷值,如: -如何切換數組值,而無需切換鍵PHP

arr1 = array('key1'=> array('name'=> 'ABC1', 'age'=> 26)); 
arr2 = array('key2'=> array('name'=> 'ABC2', 'age'=> 50)); 
arr3 = array('key3'=> array('name'=> 'ABC3', 'age'=> 44)); 

而且我想要的結果,如: -

arr1 = array('key1'=> array('name'=> 'ABC2', 'age'=> 50)); 
arr2 = array('key2'=> array('name'=> 'ABC3', 'age'=> 44)); 
arr3 = array('key3'=> array('name'=> 'ABC1', 'age'=> 26)); 
+0

爲什麼不'$ ARR1 [ '鍵1'] = $ ARR2 [ '鍵2']',什麼是你真實的生活問題? –

+0

你是否需要一個按年齡排序的新數組? – JustBaron

+0

我想按年齡排序數組,並切換數組的值而不是數組的鍵。 –

回答

1

如果你認爲你的陣列是這樣。它可幫助

<?php 
    $arr = array(
     'key1'=> array('name'=> 'ABC1', 'age'=> 26), 
     'key2'=> array('name'=> 'ABC2', 'age'=> 50), 
     'key3'=> array('name'=> 'ABC3', 'age'=> 44) 
    ); 
    $arrayIndex=array_keys($arr); 
    foreach ($arr as $key => $row) { 
    $ages[$key] = $row['age']; 
    } 
array_multisort($ages, SORT_DESC, $arr); 
$finalArray=array_combine($arrayIndex,$arr); 
echo "<pre>"; 
print_r($finalArray); 
exit(); 

?> 
+0

偉大它工作謝謝... :) –

0

你可以做到這一點簡單的方法,像這樣:

$tmp = $arr3['key3']; 
$arr3['key3'] = $arr2['key2']; 
$arr2['key2'] = $tmp; 

如果你想奇怪的方式或如果你需要排序這個數組 - 你可以做到這一點像t帽子:

$aggregate = array_merge($arr1, $arr2, $arr3); 
uasort($aggregate, function ($el, $nextEl) { 
    if ($el['age'] == $nextEl['age']) return 0; 
    return ($el['age'] > $nextEl['age'] ? -1 : 1); 
}); 
$aggregate = array_chunk($aggregate, 1, true); 
for($i = 1; $i <= 3; $i++){ 
    ${'arr'.$i} = array_shift($aggregate); 
}