note 74129 modified in function.array-unshift by danbrown

From: Date: Wed, 12 Aug 2009 16:39:41 +0000
Subject: note 74129 modified in function.array-unshift by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-159379@lists.php.net to get a copy of this message
This becomes a nice little problem if you index your arrays out of order (while manually sorting). For example: <?php $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 <br />"; } array_unshift($recordMonths,'%'); for($i = 0; $i < count($recordMonths); $i++) { $singleMonth = $recordMonths[$i]; echo "singleMonth: $singleMonth <br />"; } ?> 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... --was-- 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 <br />"; } array_unshift($recordMonths,'%'); for($i = 0; $i < count($recordMonths); $i++) { $singleMonth = $recordMonths[$i]; echo "singleMonth: $singleMonth <br />"; } 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... http://php.net/manual/en/function.array-unshift.php

« previous php.notes (#159379) next »