Як вставити елемент на початку масиву в PHP?


167

Я знаю, як вставити його до кінця:

$arr[] = $item;

Але як вставити його на початок?


2
$arr[-1] = $item;Знайдено тут: stackoverflow.com/a/15252657/669677

4
@ 2astalavista, це не працює: print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
laurent

@ returnnthis.lau_ цей випадок слід використовувати для циклу - починаючи з -1 - щоб він працював: for ($i = -1; $i < count($a)-1; $i++)як показало посилання, але його легко забути, тому я більше не віддаю перевагу цьому рішенню.

Відповіді:


267

Використовувати array_unshift ($ array, $ item);

$arr = array('item2', 'item3', 'item4');
array_unshift($arr , 'item1');
print_r($arr);

дасть тобі

Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)

7
А як бути, якщо вам потрібні буквальні, а не числові клавіші?
Еван

4
@Evan, документація для цього array_unshiftговорить наступнеAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
викрадено

1
Є дві проблеми: 1) перевстановлення масиву 2) не може додати елемент з індексом.
Набі КАЗ

2
Якщо у вас є асоціативний масив або вам потрібно зберегти ключі, перегляньте приклади користувачів тут: php.net/manual/en/function.array-unshift.php є кілька хороших прикладів, як це досягти!
Вальє

112

У разі асоціативного масиву або нумерованого масиву, де ви не хочете змінювати ключі масиву:

$firstItem = array('foo' => 'bar');

$arr = $firstItem + $arr;

array_merge не працює, оскільки завжди переновлює масив.


6
Це справді найкраща відповідь!
Анкіт

5
Увага! "Оператор + повертає правий масив, доданий до лівого масиву; для ключів, які існують в обох масивах, будуть використані елементи з лівого масиву, а відповідні елементи з правого масиву будуть ігнорується ". - Див: stackoverflow.com/a/2140094/3411766
cottton

Рішення це добре, тому що може додати елемент з індексом, а не передексерувати масив; Але майте лише примітку про видалення елемента з правого масиву, якщо в масиві лівої руки є такий самий індекс.
Набі КАЗ


6

Вставте елемент на початку асоціативного масиву за допомогою рядка / користувацького індексного ключа

<?php

$array = ['keyOne'=>'valueOne', 'keyTwo'=>'valueTwo'];

$array = array_reverse($array);

$array['newKey'] = 'newValue';

$array = array_reverse($array);

РЕЗУЛЬТАТ

[
  'newKey' => 'newValue',
  'keyOne' => 'valueOne',
  'keyTwo' => 'valueTwo'
]


4

Використовуйте array_unshift (), щоб вставити перший елемент у масив.

Користувач array_shift () видаляє перший елемент масиву.


4

Або ви можете використовувати тимчасовий масив, а потім видалити справжній, якщо хочете змінити його під час циклу:

$array = array(0 => 'a', 1 => 'b', 2 => 'c');
$temp_array = $array[1];

unset($array[1]);
array_unshift($array , $temp_array);

вихід буде:

array(0 => 'b', 1 => 'a', 2 => 'c')

і коли ви робите це під час циклу, вам слід очистити $temp_arrayпісля додавання елемента до масиву.


1

Із спеціальним індексом:

$arr=array("a"=>"one", "b"=>"two");
    $arr=array("c"=>"three", "d"=>"four").$arr;

    print_r($arr);
    -------------------
    output:
    ----------------
    Array
    (
    [c]=["three"]
    [d]=["four"]
    [a]=["two"]
    [b]=["one"]
    )

1
масив не можна об'єднати таким чином
Battle Hawk

Ймовірно, він мав намір використовувати плюс (+) замість коми (.)
Erdinç Çorbacı

1

Для асоціативного масиву ви можете просто використовувати злиття.

$arr = array('item2', 'item3', 'item4');
$arr = array_merge(array('item1'), $arr)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.