php - 排序数组(从数据库加载值)从最短到最长

时间:2015-03-26 08:04:19

标签: php sorting

我有下一个代码:

<select>
    <?php foreach ($values as $info) { ?>
      <option value="<?php echo $info['id'] ?>" <?php echo $value == $info['id'] ? 'selected="selected"' : '' ?>><?php echo $info['text'] ?></option>
    <?php } ?>
  </select>

我从数据库加载值! 并有下一个结果:

    <option value="1">Jacksonville (Florida)</option> 
    <option value="2">Florida reg.</option> 
    <option value="3">Florentia</option> 
    <option value="9999">Florida</option> 
    <option value="5">Miami (Florida)</option> 

怎么做:最重要的是&#39; text&#39;:

的最短结果 佛罗里达州 Florentia
佛罗里达州
迈阿密(佛罗里达州)
杰克逊维尔(佛罗里达州)

        <option value="9999">Florida</option> 
        <option value="3">Florentia</option>
        <option value="2">Florida reg.</option> 
        <option value="5">Miami (Florida)</option> 
        <option value="1">Jacksonville (Florida)</option> 

由于

2 个答案:

答案 0 :(得分:0)

您可以usort使用answered here in another question

function sort($a,$b){
    return strlen($b)-strlen($a);
}

usort($array,'sort');

答案 1 :(得分:0)

我将假设您正在使用mysql(i)或类似的方法来填充$values,因此如果是这种情况,您可以使用类似于的查询在数据库级别执行此操作; < / p>

SELECT name
FROM testing_table 
ORDER BY LENGTH(name)

要查看此操作,您可以创建这样的数据库表;

CREATE TABLE `testing_table` (
  `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `name` varchar(255) NOT NULL
) COMMENT='' ENGINE='InnoDB';

有一些测试数据;

INSERT INTO testing_table (name) VALUES ('eeeee'),('bb'),('ccc'),('a'),('dddd');

一个链接,可以查看所有内容:http://sqlfiddle.com/#!9/558f9/2