簡體   English   中英

PHP-從最短到最長排序數組(從數據庫中加載值)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM