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

时间:2014-11-30 19:22:51

标签: php arrays

有这样的数组

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,但也不合适......

2 个答案:

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