PHP: array_unshift - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

array_values array_unique

Last updated: Sat, 27 Jan 2007

view this page in

# array_unshift

(PHP 4, PHP 5)

array_unshift -- Добавить один или несколько элементов в начало массива

## Описание

int array_unshift ( array &array, mixed var [, mixed ...] )

array_unshift() добавляет переданные в качестве аргументов элементы в начало массива `array`. Обратите внимание, что список элементов добавляется целиком, то есть порядок элементов сохраняется. Все числовые ключи будут изменены таким образом, что нумерация массива будет начинаться с нуля, в то время как строковые ключи останутся прежними.

Возвращает новое количество элементов в `array`.

Пример 1. Пример использования array_unshift()

`<?php $queue = array("orange", "banana"); array_unshift($queue, "apple", "raspberry"); ?>`

В результате массив `$queue` будет содержать следующие элементы:

`Array
(
[0] => apple
[1] => raspberry
[2] => orange
[3] => banana
)`

См. также array_shift(), array_push() и array_pop().

add a note User Contributed Notes
array_unshift
John Brooking
02-Jun-2006 06:54
`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 ));`
06-Nov-2005 11:38
`function multi_array_search($search_value, $the_array)
{
if (is_array($the_array))
{
foreach ($the_array as $key => $value)
{
$result = multi_array_search($search_value, $value);
if (is_array($result))
{
$return = $result;
array_unshift($return, $key);
return $return;
}
elseif ($result == true)
{
$return[] = $key;
return $return;
}
}
return false;
}
else
{
if ($search_value == $the_array)
{
return true;
}
else return false;
}
}`
php at electricsurfer dot com
26-Feb-2004 06:20
`even simpler unshifting of a reference !
<?php
/**
* @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;
}
?>`
lagroue
09-Nov-2003 04:46
`Last version of PHP deprecated unshifting of a reference.
You can use this function instead :
<?php
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));
?>`
chris dot NoThxSpam dot given at hp dot com
23-Jul-2003 12:17
`If you need to change the name of a key without changing its position in the array this function may be useful.
<?php
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);
}
?>`
rsmith_NOSPAM_ at _NOSPAM_unitec dot ac dot nz
30-Jul-2002 07:00
`array_merge() will also reindex (see array_merge() manual entry), but the '+' operator won't, so...
<?php
$arrayone=array("newkey"=>"newvalue") + $arrayone;
?>
does the job.`
TimHyde at C21Technology dot com
18-Jul-2002 05:04
`A simpler way to implement an array_unshift with key=>value pairs (i.e. similar to the example using array_reverse above) is to use array_merge. i.e.
<?php
$arrayone=array_merge(array("newkey"=>"newvalue"),$arrayone);
?>
Obviously you need to take care when adding numeric or duplicate keys.`
jrh_at_geodata.soton.ac.uk
10-Jul-2002 09:30
`I have found array_unshift is a function that should be avoided when unshifting lots of data in large arrays.
In a recent script I wrote, it took approx. 24 seconds to unshift 3500 timestamps to an array, a work around could be to use array_reverse and array_push. Array_push is much faster due to the indexing.`
robert dot wills at fuzzbrain dot uklinux dot net
07-Feb-2002 06:02
`Actually this problem with the keys getting reindexed only happens when the keys are numerical:
<?php
$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`
sahn at hmc dot edu
27-Jul-2001 12:21
`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:
<?php
function array_unshift_assoc(&$arr, $key, $val)
{
$arr = array_reverse($arr, true);
$arr[$key] = $val;
$arr = array_reverse($arr, true);
return count($arr);
}
?>`
matt at synergie dot net
18-Sep-2000 10:20
`The behaviour of unshift nearly caught me out.
Not only is the item added at the start of the list but the list is re-indexed too.
<?php
$a = array(5=>"five", 6 =>"six", 20 => "twenty");
while(list($key, $value) = each($a))
echo "k: $key v: $value<BR>\n";
echo "<BR>\n";
array_unshift($a, "zero");
while(list($key, $value) = each($a))
echo "k: $key v: $value<BR>\n";
?>
k: 5 v: five
k: 6 v: six
k: 20 v: twenty
k: 0 v: zero
k: 1 v: five
k: 2 v: six
k: 3 v: twenty`
add a note
array_values array_unique

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST