0

我想将一个数组分成两部分并将第一个切片添加到末尾。它应该拆分的点设置在另一个变量中。

$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

4 回答 4

1

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

$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;
}
于 2012-07-30T12:35:09.513 回答
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);
}
于 2012-07-30T12:28:52.607 回答
1
foreach($array as $key=>$value)
{
    if ($key === $where)
    {
        break;
    }

    unset($array[$key]);
    $array[$key] = $value;
}
于 2012-07-30T12:22:52.603 回答
1

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

$arr1 = array_slice($array, 0, $where-1);
$arr2 = array_slice($array, $where, count($array)-1);
$array = array();
$array[] = $arr2;
$array[] = $arr1;
于 2012-07-30T12:22:53.670 回答