2015-09-02 48 views
1

獲得最高數我有以下陣列:從一個數組

Array ([0] => 80) Array ([0] => 20) Array ([0] => 90) 

代碼:

$percentage_query  = $this->Common_model->getTableData('prop_payment_percentage', array('list_id' => $id)); 

    $percentage_result = $percentage_query->result_array(); 

     foreach ($percentage_result as $ptime) { 

      $percentage_start_date = $percentage_query->row()->start_date; 
      $percentage_end_date = $percentage_query->row()->end_date; 
      $percentage_percentage = $percentage_query->row()->percentage; 

      //Days between start date and end date -> seasonal price 
      $start_time = $ptime['start_date']; 
      $end_time = $ptime['end_date']; 
      $hightest_percentage = $ptime['percentage']; // this is the array 802090 

      //help me echo 90 
     } 

我應該如何返回值90?因爲這是我想返回到$變量

+0

1.您有三個單獨的陣列。 2。打開谷歌 - >鍵入「陣列php的最高值」 –

+0

我發佈這個問題的原因是因爲它們是3分開的 –

+0

給一點內容(代碼),否則它是不可能幫助你的。數組是否存儲在數組中?有3個變量$ arr1,$ arr2和$ arr3嗎?你想做什麼? –

回答

-2

最簡單的方法是使用從PHP標準碼功能的最高數量:

$array = array(0 => 80, 1 => 20, 2 => 90); 
$variable = max($array); 

又見文檔在http://php.net/manual/en/function.max.php

更新:此函數不僅僅是一個整數數組。所有這些都是有效的,並返回3預期:

$a1 = array(1); 
$a2 = array(2); 
$a3 = array(3); 

$i1 = 1; 
$i2 = 2; 
$i3 = 3; 

$arr1 = array($a1, $a2, $a3); 
$arr2 = array($i1, $i2, $i3); 

echo max($a1, $a2, $a3), "\n"; // 3 
echo max($i1, $i2, $i3), "\n"; // 3 
echo max($arr1), "\n"; // 3 
echo max($arr2), "\n"; // 3 

不要緊,什麼按鍵都在陣列中使用。

更新2:如果你真的需要從價值802090工作,你可以肯定的是,值總是2位數的百分比,你也可以(再次,然後max功能)使用str_split功能:

$hightest_percentage = 802090; 
$hpr = str_split($hightest_percentage, 2); // array (80, 20, 90); 
print_r(max($hpr)); // 90 
+0

,你可以看到他們來了因爲密鑰 –

+1

是3個單獨的數組,在單獨的變量中,或在一個「超級」數組中? –

+0

這3個數組來自爆炸函數 –

0

如果您擁有一個包含數組的數組,你可以做這樣的:

$masterArray = array(
    array(80), 
    array(20), 
    array(90), 
); 
$highestValue = 0; 
foreach($masterArray as $arr){ 
    $highestValue = $arr[0] > $highestValue ? $arr[0] : $highestValue; 
} 
echo $highestValue; //echo 90; 
+0

輸出給我的是每個值的第一個字母829。我錯過了什麼? –

0

這裏是例子。如果你有3個數組或變量。

$a1 = Array ("0" => 80); 
$a2 = Array ("0" => 20); 
$a3 = Array ("0" => 90); 

$a4 = array_merge($a1,$a2); 

$a5 = array_merge($a4,$a3); 
echo '<pre>'; 
print_r(max($a5)); 
0

你並不需要循環。合併三個數組,然後使用max();

$array = array_merge(array(80),array(20),array(20)); 
    $max = max($array); 
+0

合併甚至沒有必要,'max'採用所有可比較的變量。 –

1

除非數組進行排序,這就是你會得到最好的。如果它被排序,只需要第一個和最後一個元素。

當然,如果沒有排序,那麼首先排序並抓取第一個和最後一個將保證效率低於只循環一次。即使是最好的排序算法也必須多次查看每個元素(每個元素的平均O(log N)次),即O(N * Log N)總和,一次簡單掃描僅爲O(N)。

如果你想要快速訪問的數據結構中最大的元素,看看堆了一個有效的方式來保持對象某種秩序。

sort() - sort arrays in ascending order 
rsort() - sort arrays in descending order 
asort() - sort associative arrays in ascending order, according to the value 
ksort() - sort associative arrays in ascending order, according to the key 
arsort() - sort associative arrays in descending order, according to the value 
krsort() - sort associative arrays in descending order, according to the key 

如果我們使用升序排列,然後要訪問最後一個元素,我們必須對數組大小和arr進行計數[last_position]給出最高順序

但是,通過按降序對數組進行排序,無需計數數組大小。只需訪問第一個號碼,您將獲得最高號碼

0
<? 
$a=array(0 => 1300); 
$b=array(0 => 500); 
$c=array(0 => 1220); 

$MaxValue=0; 

if($a[0]>$b[0]) 
{ 
     $MaxValue=$a[0]; 
    if($b[0]>$MaxValue) 
    { 
     $MaxValue=$b[0]; 
    } 
    else 
    { 
     if($c[0]>$MaxValue) 
     {$MaxValue=$c[0];} 
    } 
} 
else 
{ 
    if($b[0]>$c[0]) 
    { 
     $MaxValue=$b[0]; 
    } 
    else 
    { 
     $MaxValue=$c[0]; 
    } 
} 
echo $MaxValue; 
?> 
+0

輸出829 ..每個號碼的第一個字母 –

+0

ok。讓我檢查 –

+0

否@IlanHasanov。對我很好。你的數組是這個.. $ array = array(0 => 80,1 => 20,2 => 90);顯示90,用於我 –