$options = array(
array( "title" => "L", "value" => "L"),
array( "title" => "XL", "value" => "XL"),
array( "title" => "S", "value" => "S"),
array( "title" => "M", "value" => "M"),);
$options2 = array(
array( "title" => "S", "value" => "S"),
array( "title" => "M", "value" => "M"),
array( "title" => "L", "value" => "L"),
array( "title" => "XL", "value" => "XL"),);
the final data should be look like:
$options3 = array('S','M','L','XL');
我想按$ options2值重新安排$ options排序;
案例看起来像php - sort an array by key to match another array's order by key
答案 0 :(得分:0)
两个数组都有任意顺序。你想重新安排第一个数组与第二个数组具有相同的顺序,对吗?
算法:迭代第二个数组(并跟踪当前位置),对于每个项目,搜索第一个数组中的等效项(从当前位置向前),然后将其交换到当前位置
伪代码:
for (curr_pos=0; curr_pos<options2.length; curr_pos++)
for (pos=curr_pos; pos<options.length; pos++)
if options2[curr_pos]==options[pos]:
swap options[curr_pos], options[pos]
break
如果你可以使用额外的空间,那么使用哈希映射会更有效:
h=new HashMap()
for (pos=0; pos<options.length; pos++)
h[options[pos].key]=options[pos].val
for (pos=0; pos<options2.length; pos++)
options3[pos]= make_pair(options2[pos].key, h[options2[pos].key])
答案 1 :(得分:0)
这可以使用array_shift php函数完成。
请使用自定义函数rearrange_array。
function rearrange_array($array, $key) {
while ($key > 0) {
$temp = array_shift($array);
$array[] = $temp;
$key--;
}
return $array;
}
$finalArray = rearrange_array($options,2);