【问题标题】:how to access row in associative array?如何访问关联数组中的行?
【发布时间】:2016-05-28 02:45:52
【问题描述】:

此表由 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[key] 是产品名称。它们的总价值是 $pref。

这是获取排名功能的代码

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

【问题讨论】:

  • 函数get_rank的意义何在?也许是为了获得数组的有序 copy 而不是重新排序数组?是不是用arsort()然后给键编号和只用sort()一模一样?
  • 请说明$PRODUK$pref 是如何初始化/生成的。
  • 如果这个数组代表一个表,我很好奇你为什么不简单地使用查询来按你想要的方式获取和排序数据。
  • 您的问题不是“好问题”,很有可能被否决甚至被删除。请阅读How do I ask a good question?How to create a Minimal, Complete, and Verifiable example。显示,实际输出的是什么。解释预期的结果。显示所有数组包含键的内容。试试var_dump($variable)

标签: php arrays associative


【解决方案1】:

也许对你有帮助

    $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>";

【讨论】:

    【解决方案2】:

    在您的代码 sn-p 中没有声明 $PRODUK。您正在通过foreach($rank as $key =&gt; $value) 迭代$rank。所以密钥是$key$rank[$key] 的副本在$value 中。尝试输出$value 或澄清您的问题并提供更多代码,在那里可以看到$PRODUK 及其与$rank 的关系。

    在您的第二个 sn-p 中,返回数组的值是排名,即它们可能代表原始数组的键。所以你可以尝试输出例如round($pref[$value])$PRODUK[$value]。您可能需要从排名 0 开始,因为数组通常基于零。但是,您没有提供初始化代码。

    再次重申:您的问题没有提供足够的信息。

    为了您添加的问题

    如何仅在第一行回显产品名称

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

    您不需要任何 foreach 循环即可仅访问单个元素。

    【讨论】:

    • 我已经编辑了我上面的问题,希望比以前更清楚,谢谢
    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2011-02-01
    相关资源
    最近更新 更多