"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