PHP需要在阵列的顶部移动一个元件(php Need to move one element at

2019-10-29 02:03发布

有数组像这样

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]理解,第一个数字(偏移)是其中i要开始,以除去和第二(长度) -多少个元素要移除。 所以,我想

$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 ,但还没有合适的...

Answer 1:

如果你想最后一个元素移动到第一地方使用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;


Answer 2:

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


文章来源: php Need to move one element at top of array
标签: php arrays