как выбрать массив с самым старым временем - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть эти арры

[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
                )


        )

Я хочу получить это

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

                    )

                [Registraion] => Array
                    (

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

            )

, поскольку этот человек является самым старым из зарегистрированных.

Как я могу получить самую старую регистрационную стоимость?

спасибо

Ответы [ 3 ]

2 голосов
/ 20 сентября 2011
$oldestkey = null;

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

Обратите внимание, что ваш ключ Registraion написан неправильно, я думаю, он должен быть Registration? Также обратите внимание, что этот код не будет обрабатывать случай, когда есть несколько ключей с одинаковым временем регистрации. Он выберет ПЕРВЫЙ самый старый раз и вернет ключ для этой записи. Любые повторяющиеся времена будут игнорироваться.

1 голос
/ 20 сентября 2011
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];
}

Функция, указанная выше, принимает ваш массив, затем просматривает его и сравнивает даты, и возвращает последнего зарегистрированного пользователя.

1 голос
/ 20 сентября 2011

Цикл каждого элемента

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

Пожалуйста, используйте сравнение времени при сравнении

...