如何添加2个数组并对其进行排序

How can I turn:

$array1 = array(34=>"key1",54=>"key3",12=>"key2");

$array2 = array(44=>"key4",12=>"key2",1=>"key1");

into:

$array = ("key3"=>54,"key4"=>44,"key1"=>35,"key2"=>24);

How to add the value of the keys and sort by value?

You could flip the arrays, merge and sum matching key values, followed by a reverse sort:

$a1 = array(34=>"key1",54=>"key3",12=>"key2");
$a2 = array(44=>"key4",12=>"key2",1=>"key1");

function addRev($a1,$a2) {

    $a1 = array_flip($a1);
    $a2 = array_flip($a2);

    $added = array();
    foreach (array_keys($a1 + $a2) as $key) {
        $added[$key] = @($a1[$key] + $a2[$key]);
    }

    arsort($added);
    return $added;
}

print_r(addRev($a1, $a2));

Result:

Array
(
    [key3] => 54
    [key4] => 44
    [key1] => 35
    [key2] => 24
)

You can use array_merge() function for "adding" arrays. http://php.net/manual/en/function.array-merge.php

For sorting, you can check this link: Sorting an associative array in PHP

try this, I add explanations in comments

$array1 = array(34=>"key1",54=>"key3",12=>"key2");
$array2 = array(44=>"key4",12=>"key2",1=>"key1");


// fliping arrays

$a1r = array_flip($array1);
$a2r = array_flip($array2);

var_dump($a1r);
var_dump($a2r);


// adding the 2 arrays, final result in $a1r

foreach ($a2r as $key => $value) {
    if (!isset($a1r[$key])) {
        $a1r[$key] = 0;
    }

    $a1r[$key] += $value;
}

var_dump($a1r);