0

我试图在每个新行上仅显示此数组中不为空的名称。目前,使用这个,它只显示“$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++;
  }
}    
4

3 回答 3

4

您的问题是您while只为第一个玩家姓名进行内部循环。外foreach循环应该很多:

foreach ($z as $playerName) {
  if ("" !== $playerName) {
    echo $playerName . "<br />";
  }
}
于 2013-05-31T18:52:39.840 回答
2

除非您想每name10 次输出,否则请删除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>';
    }
}
于 2013-05-31T18:52:56.830 回答
1

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

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

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

于 2013-05-31T18:51:39.620 回答