0

我创建了一个获取前 5 个值的数组。例如 Tom = 5,Jill = 5,Jack = 3, Jim = 2, Joe = 2 Tom 和 Jill 共享位置 1 Jack 获得位置 2 Jim 和 Joe = 3

我已经设法对它们进行排序,但我似乎无法让他们分享位置,问题是汤姆获得位置 1,吉尔获得位置 2,杰克获得 3。我希望将值分组,然后按组位置排序。

$people = array(
    "5##Tom",
    "5##Jill",
    "3##Jack", 
    "2##Jim", 
    "2##Joe"
);

foreach( $people as $key => $value){
    $cellTD = array();
    $cellTD = explode("##",$value);

    if(!empty($cellTD[1])) {
        //Give me top 5
        if($key <= 4){
            echo '<tr>';
            echo '<td style="border: 1px solid #ccc;text-align:right;font-weight:bold;" width="20%">'.($key+1).'</td>'; 
            echo '<td style="border: 1px solid #ccc;" width="50%">'.$cellTD[1].'</td>';
            echo '<td style="border: 1px solid #ccc;" width="20%">'.$cellTD[2].'</td>';
            echo '<td style="border: 1px solid #ccc;text-align:right;" width="20%">'.numFormat($cellTD[0]).'</td>';   
            echo '</tr>';
        }
    }
}

我只想使用 php 数组而不是 mysql 进行排序和分组。

4

1 回答 1

1

您需要存储上次迭代的值并将其与当前值进行比较。

$position = 0;
$previous = 0;

foreach( $people as $value){
    $cellTD = array();
    $cellTD = explode("##",$value);

    if ($cellTD[0] != $previous) {
        // Since the value is different, increment the position
        $position++;
    }

    $previous = $cellTD[0];

从现在开始,您可以使用$position来显示位置,而不是$key+1

但正如其他人指出的那样,您$cellTD将是一个包含两个元素 (01) 的数组,因此$cellTD[2]应该给您一个“未定义索引”警告。

我让你整理表格的其余部分(因为看起来你试图输出比你发布的数组包含的更多的数据)。

于 2018-08-16T18:59:19.557 回答