2012-05-27 47 views
1

目標是提取最小,中間和最高距離。最低距離成功實現。然而中間和最高距離更復雜。從陣列中提取較低,中間和較高距離

陣列內容如下: 數組名:$陣列

Array 
(
    [0] => Array 
     (
      [city] => Array 
       (
        [0] => Reduit 
        [1] => Curepipe 
       ) 

      [distance] => 200 
     ) 

    [1] => Array 
     (
      [city] => Array 
       (
        [0] => Array 
         (
          [0] => Reduit 
          [1] => Ebe 
         ) 

        [1] => Bees Village 
        [2] => Phoen Trunk Rd 
        [3] => Riv,Phoenix 
        [4] => St l Rd 
        [5] => Geoes Guibert St 
        [6] => Curepipe 
       ) 

      [distance] => 151 
     ) 

    [2] => Array 
     (
      [city] => Array 
       (
        [0] => Array 
         (
          [0] => Reduit 
          [1] => Riv,Phoenix 
         ) 

        [1] => St l Rd 
        [2] => Geoes Guibert St 
        [3] => Curepipe 
       ) 

      [distance] =>50 
     ) 

    [3] => Array 
     (
      [city] => Array 
       (
        [0] => Array 
         (
          [0] => Reduit 
          [1] => Ebene 
         ) 

        [1] => Belles Village 
        [2] => Phoenix Trunk Rd 
        [3] => Riverside,Phoenix 
        [4] => St Paul Rd 
        [5] => Georges Guibert St 
        [6] => Curepipe 
       ) 

      [distance] => 101 
     ) 

) 

誰能告訴我哪裏錯了。我的工作是

$current = $array[0]['distance']; 

for($middleDistance=1;$middleDistance<$total;$middleDistance++){ 

    $next = $array[($middleDistance)]['distance']; 

    if ($next<$current){ 

      $current = $next; 

      print_r($current); 

      if($current>50&&$current<100){ 


      } 
    } 

} 

回答

0

爲什麼不按數值對數組進行排序並從中獲取min/mid/max?如果你真的想要最接近中間的元素,那麼在偶數個距離的情況下,你必須比較兩個最中間的元素。另外,我沒有利用他們的位置,但注意到PHP的MIN和MAX函數: http://php.net/manual/en/function.min.php
http://php.net/manual/en/function.max.php

$arr = array(200, 151, 50, 101);                              

sort($arr, SORT_NUMERIC);                               

if (count($arr)) {                                 
    $min = current($arr);                                
    $max = end($arr);                                 

    $mid = $arr[round(count($arr)/2) - 1];                             
}