我有一个这样的数组:
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 个元素是静态的,因为顺序是固定的,但如果这很重要,这个数组可能会有更多元素(在“日期”之后)。
因此,我正在寻找一种简单的方法来将第 x 个元素移动到当前第 3 个元素的位置之前。
我尝试过的一件事是将前 2 个元素保存到变量中,然后取消设置它们。我还将收入元素取消设置为变量。所以数组从第三个元素开始。然后,因为我希望我的元素在第 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 中的元素的值。
有人知道更简单的方法吗?
编辑:我在下面的代码中使用“数组”作为数组的名称。它不是实际数组的名称。