说我有以下数组:
$aTest = array('apple', 'pear', 'banana', 'kiwi', 'pineapple', 'strawberry');
我需要能够从A-Z创建一个列表,并在每个字母下显示数组中的相关值。例如A - Apple,B - 香蕉,C - 空,D - 空,... K - Kiwi .. P - 梨,菠萝等。
有人可以帮帮我吗?我假设我使用范围从A-Z循环,但后来我不确定如何从数组中回显相关值(并且在每个字母内按字母顺序排列,即菠萝之前的梨)
由于
答案 0 :(得分:3)
我建议您使用sort()
将它们全部按顺序排列。然后,跟踪第一个字母。任何时候它改变,保存并输出它。
sort( $aTest );
$currChar = '';
foreach ( $aTest as $word) {
if ( $word[0] != $currChar ) {
$currChar = $word[0];
echo $currChar . PHP_EOL;
}
echo $word . PHP_EOL;
}
从您的初始数组中,这将产生以下结果:
a
apple
b
banana
k
kiwi
p
pear
pineapple
s
strawberry
答案 1 :(得分:2)
通过使用条件和一些内置函数;这段代码有点粗糙,但是它可以解决问题:
<?php
$aTest=array('apple','pear','banana','kiwi','pineapple','strawberry');
$len=(count($aTest)-1);
$letters=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$str=null;
foreach($letters as $letter) {
for($i=0;$i<=$len;$i++) {
$str=strtoupper($letter).' - ';
if(strtolower(substr($aTest[$i],0,1))==strtolower($letter)) {
$str.=$aTest[$i];
break;
} elseif($i==$len) {
$str.='empty';
}
}
echo($str.'<br />');
}
?>
答案 2 :(得分:1)
<?php
$aTest = array('apple', 'pineapple', 'banana', 'kiwi', 'pear', 'strawberry');
$range = range('a','z');
$output = array();
foreach($range AS $letters){
foreach($aTest AS $fruit){
if(strtolower($fruit[0]) == $letters){
$output[$letters][] = $fruit;
}
}
}
foreach($output AS $letter => $fruits){
echo $letter . "<br/>--------<br/>\n";
sort($fruits);
foreach($fruits AS $indFruit){
echo $indFruit . "<br/>\n";
}
echo "<br/>\n";
}
?>