Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
PHP: array_unshift - Manual
[go: Go Back, main page]

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

search for in the

array_values" width="11" height="7"/> <array_unique
Last updated: Mon, 05 Feb 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 の要素の数を返します。

例 267. array_unshift() の例

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

上の例の出力は以下となります。

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

array_shift()array_push() および array_pop() も参照ください。



add a note add a note User Contributed Notes
array_unshift
John Brooking
03-Jun-2006 10: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 ));
07-Nov-2005 04: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
27-Feb-2004 11: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 09: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
24-Jul-2003 04: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
31-Jul-2002 11: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 09: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
11-Jul-2002 01: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 11: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
28-Jul-2001 04: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
19-Sep-2000 02: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

array_values" width="11" height="7"/> <array_unique
Last updated: Mon, 05 Feb 2007
 
 
show source | credits | sitemap | contact | advertising | mirror sites