Re: a quick question about array keys
| From: | Richard Quadling | Date: | Tue, 31 Aug 2010 16:49:46 +0000 |
| Subject: | Re: a quick question about array keys | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-307780@lists.php.net to get a copy of this message | ||
On 31 August 2010 17:39, Richard Quadling <rquadling@gmail.com> wrote:
> On 31 August 2010 17:06, Tontonq Tontonq <rootdot@gmail.com> wrote:
>> Array
>> (
>> [300] => 300
>> [301] => 301
>> ...
Not sure what happened there!
<?php
$data = array
(
300 => 300,
301 => 301,
302 => 302,
303 => 303,
304 => 304,
305 => 305,
306 => 306,
307 => 307,
308 => 308,
309 => 309,
310 => 310,
311 => 311,
312 => 312,
313 => 313,
314 => 314,
165 => 165,
166 => 166,
167 => 167,
168 => 168,
169 => 169,
170 => 170,
171 => 171,
172 => 172,
173 => 173,
201 => 201,
202 => 202,
203 => 203,
204 => 204,
205 => 205,
206 => 206,
207 => 207,
208 => 208,
209 => 209,
210 => 210,
211 => 211,
212 => 212,
213 => 213,
214 => 214,
215 => 215,
101 => 101,
315 => 315,
316 => 316,
987 => 987,
);
$newData = array();
$firstValue = null;
$lastValue = null;
foreach($data as $value)
{
// New first value.
if (is_null($firstValue))
{
$firstValue = $value;
$lastValue = null;
}
// New last value and is the same or 1 more or ongoing value
else if ((is_null($lastValue) && $value == 1 + $firstValue) || $value
== 1 + $lastValue)
{
$lastValue = $value;
}
// We have a break;
else
{
if (!is_null($lastValue))
{
$newData[] = "$firstValue-$lastValue";
}
else
{
$newData[] = "$firstValue";
}
$lastValue = null;
$firstValue = $value;
}
}
if (!is_null($firstValue))
{
if (!is_null($lastValue))
{
$newData[] = "$firstValue-$lastValue";
}
else
{
$newData[] = "$firstValue";
}
}
print_r($newData);
?>
outputs ...
Array
(
[0] => 300-314
[1] => 165-173
[2] => 201-215
[3] => 101
[4] => 315-316
[5] => 987
)
--
Richard Quadling
Twitter : EE : Zend
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY