对数组进行排序然后进行处理

时间:2016-05-31 00:46:01

标签: php arrays sorting

我有一个像这样的数组:

$fruits = array("lemon", "orange", "banana");

如果我打印这个,我得到:

[0] lemon
[1] orange
[2] banana

我想按字母顺序排序,然后通过数组打印它们,所以我做了:

sort($all_venues);
$i = 0;
$results = 0;
if ( isset($_GET['filter1']) && isset($_GET['filter2']) ) {
    while ($i < count($all_venues) ) {
        if (in_array($f1, $venues[$i]) && in_array($f2, $venues[$i])) {
            echo '&diams;  <a href="'.$venues[$i]['url'].'" target="main">'.$venues[$i]['name'].'</a> ';
            $results++;
        }
        $i++;
        if ( $i == count($all_venues) ) {
            if ( $results == 0 )
                echo '<i>no venues matching your filters</i>';
            else
                echo ' &diams;';
        }
    }       
} else {
    while ($i < count($all_venues) ) {
        if (in_array($f1, $venues[$i])) {
            echo '&diams;  <a href="'.$venues[$i]['url'].'" target="main">'.$venues[$i]['name'].'</a> ';
        }
        $i++;
        if ( $i == count($all_venues) )
            echo ' &diams;';
    }
}
unset($i);

怎么来如果我在排序之后print_r数组我看到了我期望的东西(香蕉,柠檬,橙色)但是while循环没有以正确的顺序回显它们?

2 个答案:

答案 0 :(得分:2)

修改

您的代码正在打印出错误的数据/信息,因为您要对$all_venues进行排序,而是从$venues打印。

你正在创造一个无限循环......

但是,让我们从第一期开始。

echo正在$fruit而非您的实际数组:$fruits

第二个问题,你在循环之外递增$i ....所以永远不要遍历数组。你从来没有定义过这个变量。你想要的是这个:

$i = 0;
while($i < count($fruits)) {
    echo $fruits[$i];
    $i++;
}

返回:bananalemonorange

Example/Demo

答案 1 :(得分:0)

我猜您需要asort()

$fruits = array("lemon", "orange", "banana");
asort($fruits);
foreach($fruits as $fruit){
    echo $fruit;
}
//bananalemonorange

详细了解Sorting Arrays