Asim Zaidi
Asim Zaidi

Reputation: 28284

how can I select the array with the oldest time

I have these arras

[0] => Array
        (
            [TEAM] => Array
                (
                    [id] => 5
                    [name] => localhost

                )

            [Registraion] => Array
                (

                     [Registered] => 2011-09-20 09:20:51
                )

        )

[1] => Array
        (
            [TEAM] => Array
                (
                    [id] => 6
                    [name] => localhost

                )

            [Registraion] => Array
                (

                     [Registered] => 2011-09-20 09:30:51
                )


        )

[2] => Array
        (
            [TEAM] => Array
                (
                    [id] => 7
                    [name] => localhost

                )

            [Registraion] => Array
                (

                     [Registered] => 2011-09-20 09:40:51
                )


        )

I want to get this

[0] => Array
            (
                [TEAM] => Array
                    (
                        [id] => 5
                        [name] => localhost

                    )

                [Registraion] => Array
                    (

                         [Registered] => 2011-09-20 09:20:51
                    )

            )

as that person is the oldest to register.

How can I get the oldest registration value?

thanks

Upvotes: 0

Views: 103

Answers (3)

Senad Meškin
Senad Meškin

Reputation: 13756

function getOldestRecord($ar)
{
   $last_id;
   $last_time = 0;
   foreach($ar as $key => $val)
   {
      $time_stamp = strtotime($val['Registration']['Registered']);
      if($time_stamp > $last_time)
      {
         $last_time = $time_stamp;
         $last_id = $key;
      }
   }
   return $ar[$last_id];
}

function above accepts your array, then loops through it and compare dates, and it will return last registered user.

Upvotes: 1

Ujjwal Manandhar
Ujjwal Manandhar

Reputation: 2244

Loop each item

 $oldest = $arr[0];
 foreach($array as $arr){ 
      if($arr["Registration"]["Registered"] < $oldest["Registration"]["Registered"])
            $oldest = $arr;
 }

Please use the time comparision while comparing

Upvotes: 1

Marc B
Marc B

Reputation: 360682

$oldestkey = null;

foreach (array_keys($array) as $key) {
    if (isnull($oldestkey) || ($array[$key]['Registraion']['Registered'] < $array[$oldestkey]['Registraion']['Registered']) {
         $oldestkey = $key;
    }
}

Note that your key Registraion is mis-spelled, I'm guessing it should be Registration? Also note that this code will not handle the case where there's multiple keys with the same registration time. It'll pick out the FIRST oldest time and return the key for that record. Any duplicate times will be ignored.

Upvotes: 2

Related Questions