"Burhan Khalid" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Torsten Roehr wrote:
>
> > "Burhan Khalid" <[EMAIL PROTECTED]> wrote in message
> > news:[EMAIL PROTECTED]
> >
> >>Greetings everyone :
> >>
> >>   Having a hard time with this one. I have a multi-dim array
> >>$foo[$x][$y]['key'], where $x and $y are numeric. Here is some sample
data
> >
> [ snipped ]
>
> >>I need to filter the results so that I get the latest expiry date for
> >>each product.  The expires field actually contains a timestamp.  So for
> >>the sample array above, the resultant array would have only keys 0 and
> >>2, filtering out all the rest.  There are around 180+ main entries, with
> >>any number of sub entries, but each sub entry has the same four keys.
> >>
> >>Any ideas? Getting a rather large headache mulling over this.
> >
> >
> > Hi,
> >
> > as your structure is always the same you could just loop through all
> > elements and subelements and use unset() to remove the unwanted array
> > elements:
> >
> > foreach ($foo as $key => $value) {
> >
> >         foreach ($value as $subkey => $subvalue) {
> >
> >                 // put your check logic here
> >                 if ($foo[$key][$subkey]['expires'] == '') {
> >
> >                    unset($foo[$key][$subkey]);
> >                 }
> >         }
> > }
> >
> > What do you think?
>
> Well this is what I have right now, but the problem is the logic which
> checks to see for each domain which is the last expired date. I have
> three nested for loops right now, and not getting anywhere :(

Maybe it works if you put the expires value in a seperate array, sort it and
then you can get the key of the first one and use unset():

foreach ($foo as $key => $value) {

         $tempArray = array();

         foreach ($value as $subkey => $subvalue) {

                 // add expires value only to the temporary array for
sorting
                 $tempArray[$subkey] = $foo[$key][$subkey]['expires'];
         }

         // sort array by value descending
         arsort($tempArray);

         // get first (and therefore highest timestamp) key/value pair
         $firstEntry = each($tempArray);
         $notneededSubkey = $firstEntry['key'];

         // now unset the array value with the not needed subkey
         unset($foo[$key][$notneededSubkey]);
}

Have not tried it but may work. Hope you see my point.

Regards, Torsten Roehr

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to