【问题标题】:How do I sort an associative array and split into two div's based on a value?如何对关联数组进行排序并根据值拆分为两个 div?
【发布时间】:2011-07-24 14:23:25
【问题描述】:

我喜欢根据一个值将关联数组排序为两个 div。

这是我现在拥有的:

 function showDivs($array) {
    /*
     * sort en group by
     */
    $luxury = false;
    $no_luxury = false;
    $return = '';
    while (list($key, $value) = each($array)) {

        if ($value["MinimumRate"] < 500) {
            if ($no_luxury === false) {
                $return .= '<div id="no_luxury" >';
            }
            $return .= $value['Description'] . " : " . $value["MinimumRate"] . "<br />";

            if ($no_luxury === false) {
                $return .='</div>';
                $no_luxury = true;
            }
        }

        if ($value["MinimumRate"] > 500) {
            if ($luxury === false) {
                $return .='<div id="luxury" >';
            }
            $return .= $value['Description'] . " : " . $value["MinimumRate"] . "<br />";

            if ($luxury === false) {
                $return .='</div>';
                $luxury = true;
            } 
        } 


    }
    return $return;
}

我的代码不能正常工作。

【问题讨论】:

  • 它目前的错误行为会为大家节省3分钟。
  • 如果 MinimumRate 是 500 那么它不会在任何一个 div 中。

标签: php html associative-array


【解决方案1】:

仅在第一项上创建和关闭 div。我认为您的意思是在开始时打开它并在最后关闭它。试试这个:

function showDivs($array) {
    /*
     * sort en group by
     */

    $luxury = array();
    $not_luxury = array();
    foreach ($array as $value) {
        if ($value["MinimumRate"] > 500) {
            $luxury[] = $value;
        } else {
            $not_luxury[] = $value;
        }
    }

    $return = '<div id="no_luxury" >';

    foreach ($luxury as $value) {
        $return .= $value['Description'] . " : " . $value["MinimumRate"] . "<br />";
    }

    $return .= '</div>';

    $return .= '<div id="luxury" >';

    foreach ($luxury as $value) {
        $return .= $value['Description'] . " : " . $value["MinimumRate"] . "<br />";
    }

    $return .= '</div>';

    return $return;
}

【讨论】:

  • 你的逻辑颠倒了:$value["MinimumRate"] &lt; 500 -&gt; $luxury 似乎对奢侈的定义很奇怪
  • Thx MitMaro,使用 Tenp 数组并存储值的好主意。一件小事,我替换了你的第一个 foreach,所以它显示为$not_luxury as $value btw 如何将你的答案设置为答案??
  • 欢迎您,要接受答案,只需选中答案评分下方的复选标记。
【解决方案2】:

如果问题出现在 MinimumRate = 500 时,您应该这样做:

if ($value["MinimumRate"] <= 500)    // this is your first 'if' in your code

if ($value["MinimumRate"] >= 500)    // this is the second 'if' in your code

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多