我对订购数组元素有一个简单的问题。 我们假设我们有一个这样的数组
[0]=>zero
[1]=>one
[2]=>two
[3]=>three
我想要的是一种将一些元素移动到第一个位置的方法,例如将一个和两个移动到第一个位置,这样我就可以:
[1]=>one
[2]=>two
[0]=>zero
[3]=>three
这应该在不知道数组中元素的当前位置的情况下完成,这意味着应该通过指定要移动的有用元素的名称来完成。 我想到了array_splice(),但它不会起作用,因为我应该在数组中指定元素的键。
答案 0 :(得分:0)
我能想到的唯一方法是删除它然后添加它:
$key = array_search('one', $array); // $key = 1;
$v = $my_array[$key];
unset($my_array[$key]);
array_unshift($my_array, $v);
输出:
[0] => one
[1] => zero
[2] => two
[3] => three
更新:
如果您使用array_unshift
,则不会覆盖您当前的元素。
答案 1 :(得分:0)
您可以构建两个数组(一个包含搜索到的值,另一个没有)并合并它们。请注意,如果您想保留数字键you should use the +
operator instead of array_merge
:
models
返回:
<?php
$array = array('zero', 'one', 'two', 'three');
$searched_values = array('one', 'two');
$array_first = $array_second = array();
foreach ($array as $key=>$value) {
if (in_array($value, $searched_values))
$array_first[$key] = $value;
else
$array_second[$key] = $value;
}
$array_end = $array_first + $array_second;
echo '<pre>'; print_r($array_end); echo '</pre>';
编辑:保持Array
(
[1] => one
[2] => two
[0] => zero
[3] => three
)
订单
在这种情况下,您只需要遍历serached值以构建找到的值数组并同时删除初始数组的条目:
$searched_values
返回:
<?php
$array = array('zero', 'one', 'two', 'three');
$searched_values = array('one', 'three', 'two');
$array_found = array();
foreach ($searched_values as $key=>$value) {
$found_key = array_search($value, $array);
if ($found_key !== false) {
$array_found[$found_key] = $value;
unset($array[$found_key]);
}
}
$array_end = $array_found + $array;
echo '<pre>'; print_r($array_end); echo '</pre>';
?>