从数组返回字母:for循环不起作用

时间:2014-11-19 09:02:20

标签: php arrays

动机:我想使用数组从a-z获取所有aplphabets。

进展:到目前为止我尝试过的是。

代码:

    $ap = range('a', 'z');
    $toecho="";
    for ($i = 0; $i <= 10; $i++) 
{
    $ap = $ap[i];
    $toecho .='<a href="/view/'.$ap.'" title="movies starting with letter '.$ap.'">'.$ap.'</a>';
    echo $toecho;
        }

但它不会打印/view/a" ...它只会打印/view/"

3 个答案:

答案 0 :(得分:2)

该代码违反了KISS原则。 PHP中的范围本身是可迭代的:

$toecho = '';
foreach(array_slice(range('a', 'z'), 0, 10) as $a) {
  $toecho .= "<a href='/view/${a}' title='starting with ${a}'>${a}</a><br />";
}
echo $toecho;

以更易读的方式做你想要的东西。希望能帮助到你。请注意,如果您不需要在最后一项之后进行中断,则可以使用join:

$toecho = implode('<br>', array_map(function($a) { 
  return "<a href='/view/${a}' title='starting with ${a}'>${a}</a>"; 
}, array_slice(range('a', 'z'), 0, 10)));
echo $toecho;

答案 1 :(得分:1)

同一行$ap = $ap[i];$ap = $alphas[$i];

中的2个错误

[i] - &gt;没有常数我 $ ap = $ ap - &gt;你贪图$ ap变量

代码:

$alphas = range('a', 'z');
$toecho="";

for ($i = 0; $i <= 10; $i++) 
{
    $ap = $alphas[$i];
    $toecho .='<a href="/view/'.$ap.'" title="movies starting with letter '.$ap.'">'.$ap.'</a><br />';
}
echo $toecho;

附加代码: 我们可以做得更好

$toecho="";
foreach (range('a', 'k') as $letter) {
    $toecho .='<a href="/view/'.$letter.'" title="movies starting with letter '.$letter.'">'.$letter.'</a><br />';
}
echo $toecho;

答案 2 :(得分:1)

您已覆盖$ap var,此处正在运行

$ap = range('a', 'z');

 $toecho="";
 for ($i = 0; $i <= 10; $i++) 
  {
    $a = $ap[$i]; //use a different variable name than array itself
    $toecho .='<a href="/view/'.$a.'" title="movies starting with letter '.$a.'">'.$a.'</a>';
  }

  echo $toecho;