[英]php - sorting array (loading values from database) from shortest to longest
我有下一个代码:
<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>
怎么做:最上面是“文本”的最短结果:
佛罗里达
佛罗伦萨
佛罗里达州
迈阿密,佛罗里达)
杰克逊维尔(佛罗里达)
<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>
谢谢
您可以使用usort , 在另一个问题中已在此处回答 。
function sort($a,$b){
return strlen($b)-strlen($a);
}
usort($array,'sort');
我将假设您正在使用mysql(i)或类似的方法来填充$values
,因此,在这种情况下,您可以通过使用类似的查询在数据库级别执行此操作;
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.