2016-05-28 20 views
0

該表由3列組成:產品的關鍵名稱,總價值和等級。這些等級根據總價值排序。如何僅回顯第一行中總價值最大的產品名稱?如何訪問包含最大值的第一行的關鍵字?如何訪問關聯數組中的行?

下面是排名表的代碼

<table class="table table-bordered table-striped table-hover"> 
    <tr> 
     <th></th> 
     <th>Total</th> 
     <th>Rank</th> 
    </tr> 
    <?php  

    $rank = get_rank($pref); 

    foreach($rank as $key => $value){ 
     echo"<tr>"; 
     echo"<th>$key - $PRODUK[$key]</th>"; 
     echo "<td class='text-primary'>".round($pref[$key], 3)."</td>"; 
     echo "<td class='text-primary'>".$rank[$key]."</td>"; 
     echo "</tr>"; 
     $no++;  
    }        
    ?> 
    </table>   

$ key是鑰匙和$ PRODUK [關鍵]是產品的名稱。他們的總價值是$ pref。

這裏是爲取得名次

function get_rank($array){ 
    $pref= $array; 
    arsort($pref); 
    $no=1; 
    $new = array(); 
    foreach($pref as $key => $value){ 
     $new[$key] = $no++; 
    } 
    return $new; 
} 
+0

什麼是功能點'get_rank'?也許會得到數組的有序*副本而不是重新排序數組?不使用'arsort()',然後按照與使用'sort()'完全相同的方式編號? –

+0

請顯示'$ PRODUK'和'$ pref'是如何初始化/生成的。 –

+0

如果這個數組代表一個表格,我很好奇你爲什麼不簡單地使用查詢來按照你想要的方式獲取和排序數據。 –

回答

0

的函數的代碼有沒有在您的代碼段聲明$PRODUK。您正在迭代$rankforeach($rank as $key => $value)。所以關鍵是$key$rank[$key]的副本是在$value。嘗試輸出$value代替或澄清您的問題,並提供更多的代碼,其中可以看到什麼$PRODUK及其與$rank是關係。

從第二個片段開始,返回的數組的值就是等級,即可能代表原始數組的鍵。所以你可以嘗試輸出例如round($pref[$value])$PRODUK[$value]。您可能需要從等級0開始,因爲數組通常基於零。但是,您不提供初始化代碼。

again:您的問題未提供足夠的信息。

爲了讓您的問題

如何在第一行回聲產品的唯一名稱

$key = 1; // respective to your code $no=1; 
$value = $rank[$key]; 

你不需要任何foreach循環僅訪問一個單一的元素。

+0

我已經編輯了我的問題上面,希望這比以前更清楚,謝謝 – rafdwna

0

它可以幫助你

$rank = get_rank($pref); 
    echo"<tr>"; 
    echo"<th>".key($rank)."</th>"; 
    echo "<td class='text-primary'>".round($pref[key($rank)], 3)."</td>"; 
    echo "<td class='text-primary'>".reset($rank)."</td>"; 
    echo "</tr>";