我有一个像这样的数组:
$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 '♦ <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 ' ♦';
}
}
} else {
while ($i < count($all_venues) ) {
if (in_array($f1, $venues[$i])) {
echo '♦ <a href="'.$venues[$i]['url'].'" target="main">'.$venues[$i]['name'].'</a> ';
}
$i++;
if ( $i == count($all_venues) )
echo ' ♦';
}
}
unset($i);
怎么来如果我在排序之后print_r数组我看到了我期望的东西(香蕉,柠檬,橙色)但是while循环没有以正确的顺序回显它们?
答案 0 :(得分:2)
您的代码正在打印出错误的数据/信息,因为您要对$all_venues
进行排序,而是从$venues
打印。
但是,让我们从第一期开始。
您echo
正在$fruit
而非您的实际数组:$fruits
。
第二个问题,你在循环之外递增$i
....所以永远不要遍历数组。你从来没有定义过这个变量。你想要的是这个:
$i = 0;
while($i < count($fruits)) {
echo $fruits[$i];
$i++;
}
返回:bananalemonorange
答案 1 :(得分:0)
我猜您需要asort()
$fruits = array("lemon", "orange", "banana");
asort($fruits);
foreach($fruits as $fruit){
echo $fruit;
}
//bananalemonorange
详细了解Sorting Arrays