$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>
我应该如何结合这两个地方来实现我的目标? 问候!
答案 0 :(得分:0)
问题是由于您在生成HTML时回显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)
您使用数组作为分区中的分母。确实不明智。按照我的建议编写功能,你将成为一个快乐的家伙。或者是chapess。