0

配列を2つに分割し、最初のスライスを最後に追加したいと思います。分割するポイントは別の変数に設定されます。

$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
foreach($array as $key=>$value)
{
    if ($key === $where)
    {
        break;
    }

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

array_slice()を使用して、配列を2回分割できます->

$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 に答える
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

オフセットとともに使用array_slice()して配列を分割し、2つのチャンクを配列結合演算子で結合できます。

$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 に答える