2016-05-28 12 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>";