"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.
Well, it does some sorting, but not quite what I'm after :(
I've managed to get the list so that all the (sub) entries are sorted in the correct order. Now its just a matter of finding the highest expire date for /each/ domain, and delete the other entries for that domain. So, in the end, all that's left is one entry per domain, with its latest expire date.
Hopefully this makes it a bit clearer.
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php