0

嘿,我的脚本有点问题……这是第一部分:

$imagesPerLine = array(1=>2, 2=>3); $default = 4;

$lines = array(1, 2, 3);
foreach ($lines as $line) {
  if (!isset($imagesPerLine[$line])) {
    $imagesPerLine[$line] = $default;
  }
  echo "<tr>\n";
  for ($i = 1; $i <= $imagesPerLine[$line]; $i++) {
    echo "<td>[img]</td>\n";
  }
  echo "</tr>\n";
}

结果我得到以下信息:

 <tr>
   <td>[img]</td>
   <td>[img]</td>
 </tr>
 <tr>
   <td>[img]</td>
   <td>[img]</td>
   <td>[img]</td>
 </tr>
 <tr>
   <td>[img]</td>
   <td>[img]</td>
   <td>[img]</td>
   <td>[img]</td>
 </tr>

但我希望它显示的不是“[img]”:

function getTransactionStatusImagePath($transactionId)
{
$states = array('schwarz', 'rot', 'blau');

$path = '';

foreach ($states as $state) {
  $testPath = sprintf('transactions/Ordner%s/%s.png', $transactionId, $state);

    if (file_exists($testPath)) {
      $path = $testPath;
      break;
    }
}
return $path;
}

$transactionIds = range(1,9);

foreach ($transactionIds as $transactionId) :

if (($transactionId % $imagesPerLine) == 1)
  echo "<tr>\n";

$path = getTransactionStatusImagePath($transactionId);

$imageHtml = ('' !== $path)
    ? '<img src="' . $path . '" />'
    : '<img name="nummer.' . $transactionId . '" src="inventory_images/8.jpg"  onclick="changecolor(this)" />' ;

echo "<td>$imageHtml</td>\n";

if (! ($transactionId % $imagesPerLine))
  echo "</tr>\n";

endforeach;

所以应该是这样的:

 <tr>
   <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>
   <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>
 </tr>
 <tr>
   <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>
   <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>
   <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>
 </tr>
 <tr>
   <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>
   <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>
   <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>
   <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>
 </tr>

我应该如何结合这两个 foreache 来达到我的目标?问候!

4

1 回答 1

0

问题是由于您在生成 HTML 时回显它,而不是将其构造为完整的字符串,然后回显它。如果您执行以下操作,它会变得容易得多:

$imagesPerLine = array(1=>2, 2=>3); $default = 4;
$lines = array(1, 2, 3);
$html="";
foreach ($lines as $line) {
  if (!isset($imagesPerLine[$line])) {
    $imagesPerLine[$line] = $default;
  }
  $html.= "<tr>";
  for ($i = 1; $i <= $imagesPerLine[$line]; $i++) {
   $html.=sprintf("<td>%s</td>",function_to_generate_image_detail($imagesPerLine[$line]));
  }
  $html.="</tr>";

}
 echo $html;

很难确切地确定您希望如何生成图像文本,但显然,您的函数只需要返回

<img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" />

或者你需要的任何其他东西。你似乎能够创造这个位,所以我将把它留给你。

请注意,您的代码包含其他错误,包括:

if (($transactionId % $imagesPerLine) == 1)

您在哪里使用数组作为除法中的分母。确实不明智。按照我的建议编写函数,你会很开心。或者小丑。

于 2013-06-04T11:18:37.927 回答