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 .
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;
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.