有这样的数组
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
,但也不适合...
如果要将最后一个元素移动到第一位,请使用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;
最后一个 elem ( 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);