简体   繁体   English

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

[英]php - sorting array (loading values from database) from shortest to longest

I have next code: 我有下一个代码:

<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>

i loading values from database! 我从数据库加载值! And have next results: 并得到下一个结果:

    <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> 

how to do: on the top were the shortest results for 'text': 怎么做:最上面是“文本”的最短结果:

Florida 佛罗里达
Florentia 佛罗伦萨
Florida reg. 佛罗里达州
Miami (Florida) 迈阿密,佛罗里达)
Jacksonville (Florida) 杰克逊维尔(佛罗里达)

        <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> 

Thanks 谢谢

You can use usort , as answered here in another question . 您可以使用usort在另一个问题中已在此处回答

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

usort($array,'sort');

I am going to assume that you are using mysql(i) or similar to populate the $values , so if this is the case, you can do it at the database level by using a query similar to; 我将假设您正在使用mysql(i)或类似的方法来填充$values ,因此,在这种情况下,您可以通过使用类似的查询在数据库级别执行此操作;

SELECT name
FROM testing_table 
ORDER BY LENGTH(name)

To see this in action, you can create a database table like this; 为了看到这一点,您可以创建一个数据库表,如下所示:

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

With some test data; 带有一些测试数据;

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

A link to see it all in action: http://sqlfiddle.com/#!9/558f9/2 观看全部操作的链接: http : //sqlfiddle.com/#!9/558f9/2

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM