2017-02-26 57 views
-1

好日子全部, 我已经写了一个函数来显示我的表中的某个图像,如果给定的时间确实匹配我的表记录。以下是我的函数:PHP函数获取所有列

public function image_rank_per_hour($minhour) 
     { 
      $sql = "SELECT * FROM phpvms_ranks 
         ORDER BY minhours ASC"; 
      $result = DB::get_results($sql); 
      $hours = floor($minhour/3600); 
      if(intval($hours) >= 0 AND intval($hours) < 5) 
       { 
        return $result[0]->rankimage; 
       } 
      if(intval($hours) >= 5 AND intval($hours) < 10) 
       { 
        return $result[1]->rankimage; 
       } 
      if(intval($hours) >= 10 AND intval($hours) < 35) 
       { 
        return $result[2]->rankimage; 
       } 
      if(intval($hours) >= 35 AND intval($hours) < 95) 
       { 
        return $result[3]->rankimage; 
       } 
      if(intval($hours) >= 95 AND intval($hours) < 170) 
       { 
        return $result[4]->rankimage; 
       } 
      if(intval($hours) >= 170 AND intval($hours) < 300) 
       { 
        return $result[5]->rankimage; 
       } 
      if(intval($hours) >= 300 AND intval($hours) < 1000) 
       { 
        return $result[6]->rankimage; 
       } 
      if(intval($hours) >= 1000 AND intval($hours) < 5000) 
       { 
        return $result[7]->rankimage; 
       } 
      if(intval($hours) >= 5000) 
       { 
        return $result[8]->rankimage; 
       } 

     } 

它做什么我想要实现的,因为我的表是静态的,不会改变,但我希望能够获取其他列也是如此。 ($结果[0] - >等级)

感谢

+0

如果你有'$ result [0] - > rank',有没有问题? – gaurav

+0

这样我只能得到{$ result [0] - > rank}。我想要他们两个。 –

+0

你想返回'$ result'整个数组吗? – gaurav

回答

0

我对你想要的这里有点不清楚,但可能的解决方案。

public function image_rank_per_hour($minHour) 
    { 
    $queryData = getData(); 
    $result = searchResults($queryData, $minHour); 

    // You now have the result object for the given range. 
    // and can return the entire thing, or whatever part 
    // of it you need for example: 
    // return $result; 
    // return $result->rankImage; 
    // return $result->rank; 
    return ['rank' => $result->rank, 'image' => $result->rankImage]; 
    } 

    protected function getData() 
    { 
    // Side note, it is more efficient to name your columns instead of just using *. 
    $sql = "SELECT * FROM phpvms_ranks 
     ORDER BY minhours ASC"; 
    return DB::get_results($sql); 
    } 

    protected function searchResults($data, $minHour) 
    { 
    // potentially could be defined at class level 
    $rangeResource = [ 
     ['key' => 0, 'min' => 0,'max' => 5], 
     ['key' => 1, 'min' => 5, 'max' => 10], 
     ['key' => 2, 'min' => 10, 'max' => 35], 
     ['key' => 3, 'min' => 35, 'max' => 95], 
     ['key' => 4, 'min' => 95, 'max' => 170], 
     ['key' => 5, 'min' => 170, 'max' => 300], 
     ['key' => 6, 'min' => 300, 'max' => 1000], 
     ['key' => 7, 'min' => 1000, 'max' => 5000], 
     ['key' => 8, 'min' => 5000, 'max' => null], 
    ]; 
    // Get formatted hours to check against. 
    $hours = getHours($minHour); 

    // Iterate over resource to find matching hour range. 
    $result = null; 
    foreach ($rangeResource as $range) { 
     // If not in range go to next iteration. 
     if (!checkRange($hours, $range['min'], $range['max'])) { 
     continue; 
     } 
     // Set result and end loop. 
     $result = $data[$range['key']]; 
     break; 
    } 

    return $result; 
    } 

    protected function getHours($minHour) 
    { 
    $hours = floor($minhour/3600); 
    return intval($hours); 
    } 

    protected function checkRange($value, $min, $max = null) 
    { 
    if (!empty($max)) { 
     return ($value >= $min && $value < $max); 
    } 
    return ($value >= $min); 
    } 
+0

它给我在第29和43行是一个开放括号的以下错误。 解析错误:语法错误,意外的'['在第43行的/home1/msflight/public_html/pilots/phpvms/core/common/PilotListData.class.php中 –

+0

您使用的是哪个版本的PHP?如果它在5.4之前,你将不得不改变括号符号为array();符号。 我刚回去并检查,我没有看到任何错过的分号或右括号,但我可能忽略了一些东西。 –