2

私はこのような配列を持っています:

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)

今、私がやりたいことは、次のように「収益」を 3 番目の位置に移動することです。

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' の後) より多くの要素が存在する可能性があります。

したがって、x 番目の要素を現在の 3 番目の要素の位置の前に移動する簡単な方法を探しています。

私が試したことの 1 つは、最初の 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 に挿入されることです。

もっと簡単な方法を知っている人はいますか?

編集:以下のコードでは、配列の名前として「配列」を使用しています。実際の配列の名前ではありません。

4

1 に答える 1

3

これを試して:

$front = array_slice($array,0,2);
$front['earnings'] = $array['earnings'];
$back = array_slice($array,2);
unset($back['earnings']);
$array = array_merge($front,$back);
于 2013-05-07T14:06:36.850 に答える