假设已按ASCENDING顺序排序的主数组:
$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6');
另一个数组,按照某些特定要求对键(索引)进行排序。
$keys = array(0, 2, 1, 5);
必需逻辑:应创建一个数组$output
$values
的元素开头,其中存储了索引$keys
,保留了索引的顺序。$values
的其余元素应按升序附加在后面。e.g。 1
$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6');
$keys = array(0, 2, 1, 5);
$output = array('value1', 'value3', 'value2', 'value6', 'value4', 'value5');
e.g。 2
$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6');
$keys = array(5);
$output = array('value6', 'value1', 'value2', 'value3', 'value4', 'value5');
e.g。 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
循环才能实现此功能。
我在这里试图弄清楚这件事......
答案 0 :(得分: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);