php 需要在数组顶部移动一个元素


php Need to move one element at top of array

有这样的数组

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);