我的循环只返回一个值

时间:2011-09-01 20:48:10

标签: php

这里的问题是,当我使用$picnameoutput创建数组后执行print_r时,它将打印数组,如屏幕截图所示。

稍后我运行for循环并回显它只是为了看到输出它只给我一个值,我无法弄清楚它为什么选择该值,它甚至不是数组中的第一个。

非常沮丧。

这是我的代码

<?php
  $largedir = 'images/headshots/large';
  $large = scandir($largedir);

  $picnameoutput = preg_grep("/adam.*/", $large); 
  print_r($picnameoutput);

  for ($i=0; $i<count($picnameoutput); $i++); {
  echo "$picnameoutput[$i]";
  }
?>

这是一个截图,你可以看到我的意思

enter image description here

2 个答案:

答案 0 :(得分:29)

在括号前;后面有分号for()。删除它。

所以

for ($i=0; $i<count($picnameoutput); $i++); {
echo "$picnameoutput[$i]";
}

变为

for ($i=0; $i<count($picnameoutput); $i++) {
    echo "$picnameoutput[$i]";
}

但我建议使用foreach()代替

foreach ($picnameoutput as $pic) {
    echo $pic;
}

这非常容易使用,甚至比你的for循环更快

答案 1 :(得分:12)

for后面有一个分号,所以你的代码执行如下:

for ($i=0; $i<count($picnameoutput); $i++) {
   ; // Do nothing
}
{
  echo "$picnameoutput[$i]";
}

此外,它可以缩写为

echo implode('', glob('images/headshots/large/adam*'));