我想将一个数组分成两部分,然后将第一个切片添加到最后。它应该分割的点在另一个变量中设置。
$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" );
如何实现?
答案 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;
}