我有一个这样的数组:
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”作为数组的名称。它不是实际数组的名称。
答案 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);