编辑阵列放置

时间:2016-11-30 09:22:06

标签: php

我对订购数组元素有一个简单的问题。 我们假设我们有一个这样的数组

[0]=>zero
[1]=>one
[2]=>two
[3]=>three

我想要的是一种将一些元素移动到第一个位置的方法,例如将一个和两个移动到第一个位置,这样我就可以:

[1]=>one
[2]=>two
[0]=>zero
[3]=>three

这应该在不知道数组中元素的当前位置的情况下完成,这意味着应该通过指定要移动的有用元素的名称来完成。 我想到了array_splice(),但它不会起作用,因为我应该在数组中指定元素的键。

2 个答案:

答案 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>';
?>