通过将数组拆分为2来重新排序数组,并将第一部分添加到结尾

时间:2012-07-30 12:12:29

标签: php arrays split

我想将一个数组分成两部分,然后将第一个切片添加到最后。它应该分割的点在另一个变量中设置。

$where = 7;
$array = array( 1 => "aaa", 2 => "bbb", 7 => "ccc", 13 => "ddd", 20 => "eee" );

//...code...
//I'd like to have

$array = array(7 => "ccc", 13 => "ddd", 20 => "eee", 1 => "aaa", 2 => "bbb" );

如何实现?

4 个答案:

答案 0 :(得分:1)

foreach($array as $key=>$value)
{
    if ($key === $where)
    {
        break;
    }

    unset($array[$key]);
    $array[$key] = $value;
}

答案 1 :(得分:1)

您可以使用array_slice()将数组拆分两次 - >

$arr1 = array_slice($array, 0, $where-1);
$arr2 = array_slice($array, $where, count($array)-1);
$array = array();
$array[] = $arr2;
$array[] = $arr1;

答案 2 :(得分:1)

function split_array($array, $where) {
    $temp_array = array();
    foreach ($array as $key => $value) {
         if($key != $where) {
               $temp_array[$key] = $value;
               unset($array[$key]);
         }
         else {
               break;
         }
    }
    //return array_merge($array, $temp_array);
    return ($array+$temp_array);
}

答案 3 :(得分:1)

您可以使用带有偏移array_slice()来拆分数组,并使用数组union运算符连接两个块。

$where = 7;
$array = array( 1 => "aaa", 2 => "bbb", 7 => "ccc", 13 => "ddd", 20 => "eee" );

$offset = array_search($where, array_keys($array), true);
if ($offset !== false) {
    $array = array_slice($array, $offset, null, true) + $array;
}