Php 如何结合两种前肢´;s

Php 如何结合两种前肢´;s,php,foreach,Php,Foreach,嘿,我的剧本有点问题。。。 这是第一部分: $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;

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

$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";
}
$imagesPerLine=array(1=>2,2=>3)$默认值=4;
$lines=数组(1,2,3);
foreach($line作为$line){
如果(!isset($imagesPerLine[$line])){
$imagesPerLine[$line]=$default;
}
回音“\n”;

对于($i=1;$i而言,问题是由于您在生成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;
在除法中使用数组作为分母。确实不明智。按照我的建议编写函数,你将成为一个快乐的小伙子

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>
$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)