0

假设一个主数组已经按 ASCENDING 顺序排序:

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6');

另一个带有键(索引)的数组根据某些特定要求进行排序。

$keys = array(0, 2, 1, 5);

必需的逻辑:应该创建一个数组说$output

  • 从 who's 索引的元素开始$values存储$keys保留索引的顺序。
  • 的其余元素$values应按升序附加在后面。

例如 1

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6');
$keys = array(0, 2, 1, 5);
$output = array('value1', 'value3', 'value2', 'value6', 'value4', 'value5');

例如 2

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6');
$keys = array(5);
$output = array('value6', 'value1', 'value2', 'value3', 'value4', 'value5');

例如 3

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6');
$keys is empty, no keys(indexes).
$output = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6');

我有$values$keys数组。我只需要弄清楚如何创建$output数组。我很确定阵列上需要有一个foreach循环$values才能工作。

我在这里碰壁,试图弄清楚这件事......

4

1 回答 1

1

试试这个...

基本上解析$values数组并提取相关值。取消设置数组,只留下未排序的值。数组中的剩余项将在循环后合并。与 array_merge。

取消设置数组不会更改索引值,这在这种情况下很有用。

如果有更多,就会有$keys错误$values。需要添加一些错误检查。

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6');
$keys = array(0, 2, 1, 5);

foreach ($keys AS $key) {
    $tempOutput[] = ($values[$key])?$values[$key]:'';
    unset($values[$key]);
}

$output = array_merge($tempOutput, $values);
于 2012-07-01T04:32:47.613 回答