【问题标题】:PHP asort array errorPHP 排序数组错误
【发布时间】:2012-07-05 15:50:30
【问题描述】:

我有以下数组:

$franchise_a_status[] = array(
    'id'   => $franchise['franchise_id'],
    'text' => $franchise['franchise_surname']. ' ' .$franchise['franchise_firstname'].' '.'('.$distance.')'
);

$franchise 数组是从数据库中填充的,距离变量从 Google Distance Matrix 检索信息。我希望数组按距离排序 - 最接近最远。

我以为就这么简单:

asort($franchise_a_status);

很遗憾,我错了。我将如何根据距离对这个数组进行排序?

【问题讨论】:

  • PHP 应该如何知道要排序的内容?使用魔法?
  • 这里没有实际问题。

标签: php arrays sorting


【解决方案1】:

我只给你一个提示:使用usort() 可以帮助你。

你应该编写比较函数。从那个长字符串中获取那个距离并不是一件容易的事,但是出于某种原因,您以这种方式存储它。

【讨论】:

    【解决方案2】:

    在这里使用asort 对您没有帮助。我建议重组你的数组并使用ksort:

    未经测试的例子:

    // some loop {
    
        $franchise_a_status[$distance . '_' . $franchise['franchise_id']] = array(
            'id'   => $franchise['franchise_id'],
            'text' => $franchise['franchise_surname'] . ' ' . $franchise['franchise_firstname'] . ' ' . '(' . $distance . ')'
        );
    
    // }
    
    ksort($franchise_a_status);
    

    ksort 将按键排序数组。通过将距离放在键的开头,结果将按距离排序。当距离恰好相同时,还需要 id 以防止过度编写特许经营权。

    【讨论】:

    • @user180857 - 如果你不给我更多反馈,那么我真的无能为力帮助你。我不能只为你写你的申请。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多