array_unshift
array_unshift() добавляет переданные в качестве аргументов элементы в начало массива array . Обратите внимание, что список элементов добавляется целиком, то есть порядок элементов сохраняется. Все числовые ключи будут изменены таким образом, что нумерация массива будет начинаться с нуля, в то время как строковые ключи останутся прежними.
Замечание:
Сбрасывает внутренний указатель массива на первый элемент.
Список параметров
Значения для добавления.
Возвращаемые значения
Возвращает новое количество элементов в array .
Список изменений
| Версия | Описание |
|---|---|
| 7.3.0 | Теперь эта функция может быть вызвана с одним параметром. Ранее требовалось минимум два параметра. |
Примеры
Пример #1 Пример использования array_unshift()
array_unshift ( $queue , «apple» , «raspberry» );
var_dump ( $queue );
?>
Результат выполнения данного примера:
array(4) < [0] =>string(5) "apple" [1] => string(9) "raspberry" [2] => string(6) "orange" [3] => string(6) "banana" >
Пример #2 Пример использования с ассоциативными массивами
Если один ассоциативный массив добавляется к другому ассоциативному массиву, то добавляемый массив продолжает числовой индекс первого массиве.
$foods = [
‘apples’ => [
‘McIntosh’ => ‘red’ ,
‘Granny Smith’ => ‘green’ ,
],
‘oranges’ => [
‘Navel’ => ‘orange’ ,
‘Valencia’ => ‘orange’ ,
],
];
$vegetables = [
‘lettuce’ => [
‘Iceberg’ => ‘green’ ,
‘Butterhead’ => ‘green’ ,
],
‘carrots’ => [
‘Deep Purple Hybrid’ => ‘purple’ ,
‘Imperator’ => ‘orange’ ,
],
‘cucumber’ => [
‘Kirby’ => ‘green’ ,
‘Gherkin’ => ‘green’ ,
],
];
?php
array_unshift ( $foods , $vegetables );
var_dump ( $foods );
Результат выполнения данного примера:
array(3) < [0] =>array(3) < 'lettuce' =>array(2) < 'Iceberg' =>string(5) "green" 'Butterhead' => string(5) "green" > 'carrots' => array(2) < 'Deep Purple Hybrid' =>string(6) "purple" 'Imperator' => string(6) "orange" > 'cucumber' => array(2) < 'Kirby' =>string(5) "green" 'Gherkin' => string(5) "green" > > 'apples' => array(2) < 'McIntosh' =>string(3) "red" 'Granny Smith' => string(5) "green" > 'oranges' => array(2) < 'Navel' =>string(6) "orange" 'Valencia' => string(6) "orange" > >
Смотрите также
- array_shift() — Извлекает первый элемент массива
- array_push() — Добавляет один или несколько элементов в конец массива
- array_pop() — Извлекает последний элемент массива
User Contributed Notes 13 notes
16 years ago
You can preserve keys and unshift an array with numerical indexes in a really simple way if you’ll do the following:
$someArray =array( 224 => ‘someword1’ , 228 => ‘someword2’ , 102 => ‘someword3’ , 544 => ‘someword3’ , 95 => ‘someword4’ );
$someArray =array( 100 => ‘Test Element 1 ‘ , 255 => ‘Test Element 2’ )+ $someArray ;
?>
now the array looks as follows:
array(
100=>’Test Element 1 ‘,
255=>’Test Element 2′
224=>’someword1′,
228=>’someword2′,
102=>’someword3′,
544=>’someword3′,
95=>’someword4′
);
21 years ago
array_merge() will also reindex (see array_merge() manual entry), but the ‘+’ operator won’t, so.
$arrayone =array( «newkey» => «newvalue» ) + $arrayone ;
?>
does the job.
12 years ago
Sahn’s example almost works but has a small error. Try it like this if you need to prepend something to the array without the keys being reindexed and/or need to prepend a key value pair, you can use this short function:
8 years ago
Anonymous’ associative version wasn’t working for me, but it did with this small tweak:
16 years ago
This becomes a nice little problem if you index your arrays out of order (while manually sorting). For example:
$recordMonths [ 3 ] = ‘8/%/2006’ ;
$recordMonths [ 4 ] = ‘7/%/2004’ ;
$recordMonths [ 0 ] = ‘3/%/2007’ ;
$recordMonths [ 1 ] = ‘2/%/2007’ ;
$recordMonths [ 5 ] = ’12/%/2000′ ;
$recordMonths [ 6 ] = ’11/%/2000′ ;
$recordMonths [ 7 ] = ’10/%/2000′ ;
$recordMonths [ 2 ] = ‘1/%/2007’ ;
for( $i = 0 ; $i < count ( $recordMonths ); $i ++)
<
$singleMonth = $recordMonths [ $i ];
echo «singleMonth: $singleMonth
» ;
>
array_unshift ( $recordMonths , ‘%’ );
for( $i = 0 ; $i < count ( $recordMonths ); $i ++)
<
$singleMonth = $recordMonths [ $i ];
echo «singleMonth: $singleMonth
» ;
>
?>
Produces:
singleMonth: 3/%/2007
singleMonth: 2/%/2007
singleMonth: 1/%/2007
singleMonth: 8/%/2006
singleMonth: 7/%/2004
singleMonth: 12/%/2000
singleMonth: 11/%/2000
singleMonth: 10/%/2000
singleMonth: %
singleMonth: 8/%/2006
singleMonth: 7/%/2004
singleMonth: 3/%/2007
singleMonth: 2/%/2007
singleMonth: 12/%/2000
singleMonth: 11/%/2000
singleMonth: 10/%/2000
singleMonth: 1/%/2007
It reindexes them based on the order they were created. It seems like if an array has all numeric indexes, then it should reindex them based on the order of their index. Just my opinion.
19 years ago
even simpler unshifting of a reference !
/**
* @return int
* @param $array array
* @param $value mixed
* @desc Prepend a reference to an element to the beginning of an array. Renumbers numeric keys, so $value is always inserted to $array[0]
*/
function array_unshift_ref (& $array , & $value )
$return = array_unshift ( $array , » );
$array [ 0 ] =& $value ;
return $return ;
>
?>
21 years ago
Actually this problem with the keys getting reindexed only happens when the keys are numerical:
$a = array( «f» => «five» , «s» => «six» , «t» =>
«twenty» );
print_r ( $a );
echo «\n» ;
foreach( $a as $key => $val )
echo «k: $key v: $val \n» ;
>
array_unshift ( $a , «zero» );
print_r ( $a );
echo «\n» ;
foreach( $a as $key => $val )
echo «k: $key v: $val \n» ;
>
?>
Array
(
[f] => five
[s] => six
[t] => twenty
)
k: f v: five
k: s v: six
k: t v: twenty
Array
(
[0] => zero
[f] => five
[s] => six
[t] => twenty
)
k: 0 v: zero
k: f v: five
k: s v: six
k: t v: twenty
17 days ago
This function helps if you want to prepend a key and value pair to the beginning of an array:
function array_kunshift(array $array, string|int $key, mixed $value): array return array_merge([$key => $value], $array);
>
7 years ago
Another way to tack something to the beginning of an array is with array_merge().
$plans = array(‘AARP’=>’Senior’, ‘AAA’=>’Automobile Club’);
$plans = array_merge(array(«BAR»=>»Best Available Rate»), $plans);
22 years ago
If you need to prepend something to the array without the keys being reindexed and/or need to prepend a key value pair, you can use this short function:
20 years ago
If you need to change the name of a key without changing its position in the array this function may be useful.
function array_key_change ( $Old , $New , $In , $NewVal = NULL ) <
$Temp = array();
while(isset( $Temp [ $Old ]) == false ) <
list( $k , $v ) = each ( $In );
$Temp [ $k ] = $v ;
unset( $In [ $k ]);
>
if( $NewVal == NULL ) <
$NewVal = $Temp [ $Old ];
>
unset( $Temp [ $Old ]);
$Temp = array_reverse ( $Temp );
$In = array_merge (array( $New => $NewVal ), $In );
while(list( $k , $v ) = each ( $Temp )) <
$In = array_merge (array( $k => $v ), $In );
>
return( $In );
>
?>
17 years ago
I had a need tonight to convert a numeric array from 1-based to 0-based, and found that the following worked just fine due to the «side effect» of renumbering:
array_unshift ( $myArray , array_shift ( $myArray ));
?>
20 years ago
Last version of PHP deprecated unshifting of a reference.
You can use this function instead :
function array_unshift1 (& $ioArray , $iValueWrappedInAnArray ) <
$lNewArray = false ;
foreach ( array_keys ( $ioArray ) as $lKey )
$lNewArray [ $lKey + 1 ] = & $ioArray [ $lKey ];
$ioArray = array (& $iValueWrappedInAnArray [ 0 ]);
if ( $lNewArray )
foreach ( array_keys ( $lNewArray ) as $lKey )
$ioArray [] = & $lNewArray [ $lKey ];
return count ( $ioArray );
>
// before last PHP (now generates a deprecation warning)
array_unshift ( $a , & $v );
// since last PHP (caution, there is a wrapping array !!)
array_unshift1 ( $a , array (& $v ));
?>
- Функции для работы с массивами
- array_change_key_case
- array_chunk
- array_column
- array_combine
- array_count_values
- array_diff_assoc
- array_diff_key
- array_diff_uassoc
- array_diff_ukey
- array_diff
- array_fill_keys
- array_fill
- array_filter
- array_flip
- array_intersect_assoc
- array_intersect_key
- array_intersect_uassoc
- array_intersect_ukey
- array_intersect
- array_is_list
- array_key_exists
- array_key_first
- array_key_last
- array_keys
- array_map
- array_merge_recursive
- array_merge
- array_multisort
- array_pad
- array_pop
- array_product
- array_push
- array_rand
- array_reduce
- array_replace_recursive
- array_replace
- array_reverse
- array_search
- array_shift
- array_slice
- array_splice
- array_sum
- array_udiff_assoc
- array_udiff_uassoc
- array_udiff
- array_uintersect_assoc
- array_uintersect_uassoc
- array_uintersect
- array_unique
- array_unshift
- array_values
- array_walk_recursive
- array_walk
- array
- arsort
- asort
- compact
- count
- current
- end
- extract
- in_array
- key_exists
- key
- krsort
- ksort
- list
- natcasesort
- natsort
- next
- pos
- prev
- range
- reset
- rsort
- shuffle
- sizeof
- sort
- uasort
- uksort
- usort
- each
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Перемещение элемента массива в начало
Доброго времени суток, подвернулась такая задача переместить элемент массива в начало. Вроде сделал, но может есть более красивый способ переместить элемент в начало?
var arr = [0, 1, 2, 3, 4, 5]; console.log(arr); var removed = arr.splice(3, 1); arr.unshift(removed[0]); console.log(arr);Отслеживать
задан 7 фев 2018 в 13:16
1,367 1 1 золотой знак 10 10 серебряных знаков 21 21 бронзовый знак
Что вы называете красивым? Короче? Универсальнее?
7 фев 2018 в 13:22
Красивым = короче. Может есть какой-то уже готовый специальный метод для перемещения по ключу в начало.
7 фев 2018 в 13:24
@Puvvl Как Вам такой вариант arr.unshift(. arr.splice(3,1)); ?
Как переместить элемент массива в js?
судя по этой теме Почему выходит ошибка? ты умеешь с массивами работать, а это во много раз легче задача, чем в той теме. Даже не попытаешься ее решить?
Александр Шоу @AlexShow163 Автор вопроса
edward_freedom, пробую но не выходит.Я только учусь.
let infoArr = document.querySelector(‘.arr’);
let numArr = [1,0,0,0,0,0];
document.querySelector(‘.task13 button’).onclick = () => for( let a = 0; aconsole.log(numArr)
if(numArr[a] > 0 ) numArr[a] = 0;вот такого рода код получается и вывод конечный результат 0.1.1.1.1.1 а требуется 0.0.0.0.0.1
Решения вопроса 3

Для правильного вопроса надо знать половину ответа
let arr = [1,0,0,0,0]; arr.unshift(arr.pop()); console.log(arr);Array(5) [ 0, 1, 0, 0, 0 ]
Ответ написан более трёх лет назад
Нравится 2 1 комментарийА как сделать так чтобы например если в массиве [0,0,0,2,1,0,0,1,1,1] все нули чтобы расположились справа.
eugenedrvnk @eugenedrvnk
function move(val, array)
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
let index = arr.indexOf('1'); if (index !== arr.length - 1) < arr[index + 1] = arr.splice(index, 1, arr[index + 1])[0]; >elseКак переместить элемент js массива в конец
Чтобы переместить элемент массива в конец, можно воспользоваться методом splice :
const items = ['first', 'second', 'third']; const fromIndex = 1; // индекс элемента, который надо перенести в конец const item = items.splice(fromIndex, 1)[0]; // получаем элемент, который надо перенести и удаляем его из массива items.splice(items.length, 1, item); // добавляем элемент в конец console.log(items); // проверяем результат19 октября 2022
Пусть дан массив [1, 3, 5, 7, 9] . Предположим, что мы хотим переместить в конец массива элемент с индексом 1. На выходе должны получить массив [1, 5, 7, 9, 3] .
let numbers = [1, 3, 5, 7, 9]; const fromIndex = 1; // индекс перемещаемого элемента numbers.push(numbers[fromIndex]); // добавляем элемент с нужным индексом в конец массива numbers = numbers.filter((num, index) => index !== fromIndex); // удаляем элемент с индексом 1 из массива console.log(numbers); // => [1, 5, 7, 9, 3]
