Php 带范围的foreach不起作用

Php 带范围的foreach不起作用,php,foreach,range,Php,Foreach,Range,这是我的密码: function my_function() { $states = array('schwarz', 'rot', 'blau'); foreach(range(0, 5) as $number) { foreach ($states as $state) { $result = "<img src=\"inventory_images/8.jpg\" onclick=\"changecolor(this)\" name=\"nummer.$number

这是我的密码:

   function my_function()
{
$states = array('schwarz', 'rot', 'blau');
foreach(range(0, 5) as $number) {
  foreach ($states as $state) {
    $result = "<img src=\"inventory_images/8.jpg\" onclick=\"changecolor(this)\" name=\"nummer.$number\" />";
    $testPath = "transactions/Ordner$number/$state.png";
    if (file_exists($testPath)) {
      $result = $testPath;
    }
  }
  break;
}
return $result;
}
$imagesPerLine = array(1=>1, 2=>2); $default = 3;
$lines = array(1, 2, 3);
$html="";
foreach ($lines as $line) {
if (!isset($imagesPerLine[$line])) {
  $imagesPerLine[$line] = $default;
}
$html.= "<tr>\n";
for ($i = 1; $i <= $imagesPerLine[$line]; $i++) {
  $html.=sprintf("<td>%s</td>\n", my_function());
}
$html.="</tr>\n";

}
echo $html;
函数我的函数()
{
$states=数组('schwarz','rot','blau');
foreach(范围(0,5)为$number){
foreach($states作为$state){
$result=“”;
$testPath=“transactions/Ordner$number/$state.png”;
如果(文件_存在($testPath)){
$result=$testPath;
}
}
打破
}
返回$result;
}
$imagesPerLine=array(1=>1,2=>2)$默认值=3;
$lines=数组(1,2,3);
$html=“”;
foreach($line作为$line){
如果(!isset($imagesPerLine[$line])){
$imagesPerLine[$line]=$default;
}
$html.=“\n”;

对于($i=1;$i您的逻辑有缺陷。因为您从函数返回字符串,并在外部打印,所以需要更改执行方式。目前,您正在执行以下操作:

for ($i = 1; $i <= $imagesPerLine[$line]; $i++) {
  $html.=sprintf("<td>%s</td>\n", my_function());
}

不清楚您试图实现什么,但是范围循环仅在$number=0的情况下运行,因为您在第一次迭代后将打破该循环。
range()
按预期工作:。问题显然在其他地方。但是
中断
条件在第一次迭代后停止循环。这似乎不合逻辑。那么我应该在哪里放置中断;当不是在第一次迭代后?我只想获得第二次输出,我发布了..但我总是得到(name=“numer.0”)而不是(name=“numer.n+1”)就像我想要的。你知道吗?问候!你解决了问题还是还在挣扎?还在挣扎Khawer Zeshan…:/i删除了break;因为我认为没有必要,但我仍然得到了第一个输出..有人可以帮助我吗?问候!
<tr>
<td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.0" /></td>
</tr>
<tr>
<td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.1" /></td>
<td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.2" /></td>
</tr>
<tr>
<td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.3" /></td>
<td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.4" /></td>
<td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.5" /></td>
</tr>
for ($i = 1; $i <= $imagesPerLine[$line]; $i++) {
  $html.=sprintf("<td>%s</td>\n", my_function());
}
$result .= "<td>etc etc $number etc etc</td>\n";
for ($i = 1; $i <= $imagesPerLine[$line]; $i++) {
  $html .= my_function();
}