Foreach while循环php问题

时间:2013-05-31 18:49:19

标签: php while-loop

我试图在每个新行上只显示此数组中非空的名称。目前,使用它,它只显示“$ playerName1”的名称10次。我试图找出为什么它实际上没有循环遍历所有10个playerName。它似乎只是检查$ playerName1。

$z = array($playerName1, $playerName2, $playerName3, $playerName4, $playerName5, $playerName6, $playerName7, $playerName8, $playerName9, $playerName10);
$zCounter = 1;
foreach ($z as $allNames) {
  while ($allNames != "" && $zCounter < 11) {
    echo $allNames . "<br>";
    $zCounter++;
  }
}    

3 个答案:

答案 0 :(得分:4)

您的问题是,您正在通过内部while循环仅查看第一个玩家名称。外foreach循环应该充足:

foreach ($z as $playerName) {
  if ("" !== $playerName) {
    echo $playerName . "<br />";
  }
}

答案 1 :(得分:2)

除非您想要输出每个name 10次,否则请删除while循环。您仍然可以使用!=''empty()

检查以确保名称不为空
<?php
$z = array($playerName1, $playerName2, $playerName3, $playerName4, $playerName5, $playerName6, $playerName7, $playerName8, $playerName9, $playerName10);
foreach($z as $name){
    if(!empty($name)){
        echo $name.'<br>';
    }
}

答案 2 :(得分:1)

你需要在每个while循环后重置$ zCounter

foreach ($z as $allNames) {
  while ($allNames != "" && $zCounter < 11) {
    echo $allNames . "<br>";
    $zCounter++;
  }
  $zCounter = 0;
}  

否则在第一个while循环结束后,$ zCounter将始终为11