移动键控PHP数组中的键/值

时间:2013-05-07 13:53:28

标签: php arrays

我有一个这样的数组:

array (size=8)
  'cb' => string '<input type="checkbox"/>' (length=24)
  'title' => string 'Name' (length=4)
  'download_category' => string 'Categories' (length=10)
  'download_tag' => string 'Tags' (length=4)
  'price' => string 'Price' (length=5)
  'sales' => string 'Sales' (length=5)
  **'earnings' => string 'Earnings' (length=8)**
  'shortcode' => string 'Purchase Short Code' (length=19)
  'date' => string 'Date' (length=4)

现在我想要做的是将“收益”移动到第三个位置,如下所示:

array (size=9)
  'cb' => string '<input type="checkbox"/>' (length=24)
  'title' => string 'Name' (length=4)
  **'earnings' => string 'Earnings' (length=8)**
  'download_category' => string 'Categories' (length=10)
  'download_tag' => string 'Tags' (length=4)
  'price' => string 'Price' (length=5)
  'sales' => string 'Sales' (length=5)
  'shortcode' => string 'Purchase Short Code' (length=19)
  'date' => string 'Date' (length=4)

这个数组的前9个元素在定义是固定的意义上是静态的,但是如果重要的话,这个数组可能会有更多的元素(在'date'之后)。

因此,我正在寻找一种简单的方法来在当前第3个元素的位置前移动第x个元素。

我尝试过的一件事是将前2个元素保存到变量中,然后取消设置。我还将收益元素设置为变量。所以数组然后从第3个元素开始。然后,因为我希望我的元素在第3个元素之前,我需要其他2个元素,如下所示:

$first = $array[0];
$second = $array[1];
$earnings_element = $array['earnings'];
unset($array[0]); 
unset($array[1]);
unset($array['earnings']);
array_unshift($array,$first,$second,$earnings_element);

问题是要么丢失元素名称(它变成1,2的键值等),要么将这些元素的值插回到unshift中。

任何人都知道一种更简单的方法吗?

编辑:我在下面的代码中使用“array”作为数组的名称。它不是实际数组的名称。

1 个答案:

答案 0 :(得分:3)

试试这个:

$front = array_slice($array,0,2);
$front['earnings'] = $array['earnings'];
$back = array_slice($array,2);
unset($back['earnings']);
$array = array_merge($front,$back);