有这样的数组
Array
(
[] =>
[3837920201e05ba7c2fbffd3f1255129] => 'bg img a href Main | Delete etc'
[94ae40ff9b6df5bb123fb12211f48b11] => 'bg img a href Main | Delete etc'
[3974b3863e7ca7b7ea2026e44bbacfd2] => 'bg img a href Main | Delete etc'
)
想要将键3974b3863e7ca7b7ea2026e44bbacfd2
移到顶部,以便数组看起来像
Array
(
[] =>
[3974b3863e7ca7b7ea2026e44bbacfd2] => 'bg img a href Main | Delete etc'
[3837920201e05ba7c2fbffd3f1255129] => 'bg img a href Main | Delete etc'
[94ae40ff9b6df5bb123fb12211f48b11] => 'bg img a href Main | Delete etc'
)
首先提取我想要在顶部的项目
$top_image = array_slice( $array, 2, 1 );
3974b3863e7ca7b7ea2026e44bbacfd2
是数组(0,1,2)
接下来要创建数组$other_images
。决定删除初始的第三个元素,然后合并两个数组。
尝试删除第三个元素。阅读[array_splice][1]
了解第一个数字(偏移量)是我想要开始删除的位置,第二个数字(长度) - 要删除的元素数量。所以我试过
$top_image = array_splice( $array, 2, 1 );
但结果与array_slice相同。
然后尝试了
foreach( $arr as $k => $val ){
if( $k != 2 ){
$other_images[] = $val;
}
}
期待看到2个剩余元素。但是看到所有3个。
有什么问题?如何从数组中删除某些元素?
关于foreach
$k
不能等于2,因为$k
是长字符串...尝试for
,但也不合适......
答案 0 :(得分:2)
如果你想把最后一个元素移到第一个位置,请使用array_pop,array_merge和foreach技巧来保存密钥。
foreach($array as $key => $v) {}
$temp = [$key => array_pop($array)];
array_merge($temp, $array);
$array = $temp;
如果它不是最后一个元素并且您知道密钥,那么它将会帮助您。
// assume $key is set
$temp = [$key => $array[$key]];
unset($array[$key]);
array_merge($temp, $array);
$array = $temp;
答案 1 :(得分:1)
最后一个(3974b3863e7ca7b7ea2026e44bbacfd2 => 'bg img a href Main | Delete etc'
)到顶部:
// last value to top
$last = array_pop($arr);
array_unshift($arr,$last);
<强>更新强>
// last couple(key-value) to top
end($arr);
$last_key = key($arr);
$last_value = array_pop($arr);
$arr = array($last_key=>$last_value) + $arr;
var_dump($arr);