如何在不切换键PHP的情况下切换数组值
问题描述:
Please help me I have arrey values like :-
arr1 = array('key1'=> array('name'=> 'ABC1', 'age'=> 26));
arr2 = array('key2'=> array('name'=> 'ABC2', 'age'=> 50));
arr3 = array('key3'=> array('name'=> 'ABC3', 'age'=> 44));
And I want the result like :-
arr1 = array( 'key1'=> array('name'=> 'ABC2', 'age'=> 50) );
arr2 = array( 'key2'=> array('name'=> 'ABC3', 'age'=> 44) );
arr3 = array( 'key3'=> array('name'=> 'ABC1', 'age'=> 26) );
答
If you consider your array like this .It could be helpful
<?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();
?>
答
You can do this in simple way, like this:
$tmp = $arr3['key3'];
$arr3['key3'] = $arr2['key2'];
$arr2['key2'] = $tmp;
If you want freaky way or if you need to sort this arrays - you can do this like that:
$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);
}