显示基于另一个数组排序的数组



我有两个数组

Array 1 : $agents = Array('abc','xyz','pqr');
Array 2 : $tot_calls = Array ('10','5','20');

这里的数组2分别反映了$agents数组中座席的总调用次数。例如座席abc打了10次电话,座席xyz打了5次电话,以此类推。

我希望生成的数组显示按呼叫次数排序(降序)的座席

。e $result = Array('pqr','abc','xyz');//这里的结果数组是按照调用次数的最大值排序的

在这种特殊情况下,您可以将array_combine()krsort()结合使用。考虑这个例子:

$agents = Array('abc','xyz','pqr');
$tot_calls = Array ('10','5','20');
// calls become the keys and agents become the values
$sorted_values = array_combine($tot_calls, $agents);
krsort($sorted_values); // sort them by keys
print_r($sorted_values);
// maybe if you want to clear the keys
$sorted_values = array_values($sorted_values);
样本小提琴

编辑:

或者,@Satish对此提出了一个很好的观点。为了避免相同的键问题(好吧,至少在没有代理名称冲突的情况下)。你可以用这个来代替(正好相反):

$agents = Array('abc','xyz','pqr');
$tot_calls = Array ('10','5','20');
// agents become keys and calls become values
$sorted_values = array_combine($agents, $tot_calls);
arsort($sorted_values);
$sorted_values = array_keys($sorted_values);
print_r($sorted_values);
样本小提琴

try this

$agents = Array('abc','xyz','pqr');
$tot_calls = Array (10, 5, 20);
arsort($tot_calls);
foreach($tot_calls as $key=>$val)
{
  $arr_agents[] = $agents[$key];
}
print_r($arr_agents);

输出:

Array
(
    [0] => pqr
    [1] => abc
    [2] => xyz
)

DEMO-2: with

$agents = Array('abc','xyz','pqr','lmn');
$tot_calls = Array ('10', '5', '20', '5');

OUTPUT-2:

Array
(
    [0] => pqr
    [1] => abc
    [2] => lmn
    [3] => xyz
)

最新更新