如何在不切换键PHP的情况下切换数组值

如何在不切换键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);
}