PHP помещает foreach () внутри таблицы

0

Во-первых, я очень рад, что наткнулся на этот сайт, ваши вопросы и ответы помогли мне с моими ранними заданиями :) Теперь мне нужна помощь :( Что я пытался сделать с моим кодом, так это создать таблицу, в которой она была бы 3 столбца " Продукт " " Описание " " Цена ". Под каждым из следующих заголовков я бы использовал свои массивы " $productImage " под столбцом " Продукт " и т.д. Моя проблема в том, что я просто не могу показаться выяснить, как сделать таблицу при использовании функции foreach().

Любая помощь будет оценена!

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
 <body>

<?php

   $productImage = array('http://www.rudebaguette.com/assets/PlayStation4 FeaturedImage.jpg', 'http://cdn0.mos.techradar.futurecdn.net//art/games_consoles/Xbox%20One/Press%20shots/Xbox%20One%20family-580-90.jpg', 'http://www.blogcdn.com/de.engadget.com/media/2009/08/razer-naga-mmo-mouse-all-set-to-create-a-new-world-record11.jpg', 'http://cdn1.mos.techradar.futurecdn.net//art/gadgets/Google%20Glass/google_glass_grey-580-90.jpg', 'http://img1.targetimg1.com/wcsstore/TargetSAS//img/p/10/02/10029875.jpg');
   $description = array('PS4 ', 'Xbox One', 'Razer Naga', 'Google Glass', 'Magic Bullet');  
   $price = array('400', '350', '70', '300', '50');
   echo '<table>';
   foreach ($productImage as $pic)
   {
       echo '<tr>';
       echo '<td>';
       echo "<img src='".$pic."' width='200' height='180'>";
       echo '</td>';
       echo '</tr>';    
   }

   foreach ($description as $des)
   {
       echo '<tr>';
       echo '<td>';
       echo $des;
       echo '</td>';
       echo '</tr>'; 
   }

   foreach ($price as $m)
   {
       echo '<tr>';
       echo '<td>';
       echo $m;
       echo '</td>';
       echo '</tr>';
   }

?>

Теги:

5 ответов

1
Лучший ответ

Попробуй это...

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
  </head>
  <body>
    <?php
      $productImage = array('http://www.rudebaguette.com/assets/PlayStation4 FeaturedImage.jpg', 'http://cdn0.mos.techradar.futurecdn.net//art/games_consoles/Xbox%20One/Press%20shots/Xbox%20One%20family-580-90.jpg', 'http://www.blogcdn.com/de.engadget.com/media/2009/08/razer-naga-mmo-mouse-all-set-to-create-a-new-world-record11.jpg', 'http://cdn1.mos.techradar.futurecdn.net//art/gadgets/Google%20Glass/google_glass_grey-580-90.jpg', 'http://img1.targetimg1.com/wcsstore/TargetSAS//img/p/10/02/10029875.jpg');
      $description = array('PS4 ', 'Xbox One', 'Razer Naga', 'Google Glass', 'Magic Bullet');  

      $price = array('400', '350', '70', '300', '50');

      echo '<table>';
    echo "<tr><td>Product</td><td>description</td><td>Price</td></tr>";
    foreach ($productImage as $key=>$pic)
    {
        echo "<tr>";
            echo '<td>';
            echo "<img src='".$productImage[$key]."' width='200' height='180'>";
            echo '</td>';
            echo '<td>';
            echo $description[$key];
            echo '</td>';
            echo '<td>';
            echo $price[$key];
            echo '</td>';
        echo '</tr>'; 
    }
    ?>
  </body>
</html>
  • 0
    Работает как шарм!
2

Вам понадобится только один цикл foreach, чтобы сделать что-то подобное, но вам нужно поместить все их в один и тот же массив:

<?php
// You can have an array of arrays, like such.
// This is called a multidimensional array
$array = array(
    array(
        'image' => '...',
        'desc'  => '...',
        'price' => '...'
    ),
    array(
        ...
    )
);
?>

<table>
    <?php foreach($array as $item): ?>
    <tr>
        <td><img src="<?php echo $item['image']; ?>: /></td>
        <td><?php echo $item['desc']; ?></td>
        <td><?php echo $item['price']; ?></td>
    </tr>
    <?php endforeach; ?>
</table>

Надеюсь это поможет.

  • 0
    Я попробую это! Большое спасибо за быстрый ответ :) Я вернусь с результатами. Еще раз спасибо!
  • 0
    Нет проблем, и добро пожаловать в StackOverflow :)
0

здесь что-то, что я люблю использовать. это немного более общий.

     <?php
     $product_table = array(
         array(
             'image' => '<img src="http://www.rudebaguette.com/assets/PlayStation4 FeaturedImage.jpg" />',
             'description' => 'PS4 ',
             'price' => 400,
         ),
         array(
             'image' => '<img src="http://cdn0.mos.techradar.futurecdn.net//art/games_consoles/Xbox%20One/Press%20shots/Xbox%20One%20family-580-90.jpg" />',
             'description' => 'Xbox One',
             'price' => 350,
         ),
         array(
             'image' => '<img src="http://www.blogcdn.com/de.engadget.com/media/2009/08/razer-naga-mmo-mouse-all-set-to-create-a-new-world-record11.jpg" />',
             'description' => 'Razer Naga',
             'price' => 70,
         ),
         array(
             'image' => '<img src="http://cdn1.mos.techradar.futurecdn.net//art/gadgets/Google%20Glass/google_glass_grey-580-90.jpg" />',
             'description' => 'Google Glass',
             'price' => 300,
         ),
         array(
             'image' => '<img src="http://img1.targetimg1.com/wcsstore/TargetSAS//img/p/10/02/10029875.jpg" />',
             'description' => 'Magic Bullet',
             'price' => 50,
         ),
     );

     $first_row = TRUE;

     echo '<table>';

     foreach ($product_table as $product_row) {
         echo "<tr>";

         foreach ($product_row as $column_name => $column_value) {
             if ($first_row) {
                 printf("<th>%s</th>", $column_name);
                 $first_row = FALSE;
             } else {
                 printf("<td>%s</td>", $column_value);
             }
         }

         echo "</tr>";
     }

     echo "</table>";
0

попробуйте этот код, это поможет вам.

echo "<table>";
for($index=0; $index<count($productImage); $index++)
{
    echo"<tr>";
    echo "<td><img src='{$productimage[$index]}' width='200' height='180'></td>";
    echo "<td>{$description[$index]}</td>";
    echo "<td>{$price[$index]}</td>";
    echo "</td>";
}
echo "</table>";

но для меня это нехорошее решение, вы должны использовать массив массивов вроде этого

$array = array(
    array(
        'image' => 'http://www.rudebaguette.com/assets/PlayStation4 FeaturedImage.jpg',
        'desc'  => 'PS4',
        'price' => '400'
    ),
    array(
        ...
    )
);

и затем использовать этот цикл

echo "<table>";
foreach($array in $item)
{
    echo"<tr>";
    echo "<td><img src='{$item['image']}' width='200' height='180'></td>";
    echo "<td>{$item['desc']}</td>";
    echo "<td>{$item['price']}</td>";
    echo "</td>";
}
echo "</table>";
  • 0
    Как раз то, что я искал, я новичок в PHP и всей сцене кодирования. Я помню, как мой профессор воспитывал массив или массивы, он же сказал, что это сделает вещи намного эффективнее. Не могу отблагодарить вас, ребята !!!
0
<?php
$productImage = array('http://www.rudebaguette.com/assets/PlayStation4 FeaturedImage.jpg', 'http://cdn0.mos.techradar.futurecdn.net//art/games_consoles/Xbox%20One/Press%20shots/Xbox%20One%20family-580-90.jpg', 'http://www.blogcdn.com/de.engadget.com/media/2009/08/razer-naga-mmo-mouse-all-set-to-create-a-new-world-record11.jpg', 'http://cdn1.mos.techradar.futurecdn.net//art/gadgets/Google%20Glass/google_glass_grey-580-90.jpg', 'http://img1.targetimg1.com/wcsstore/TargetSAS//img/p/10/02/10029875.jpg');

    $description = array('PS4 ', 'Xbox One', 'Razer Naga', 'Google Glass', 'Magic Bullet');  

   $price = array('400', '350', '70', '300', '50');

  ?>

   <table>
       <tr>
         <th>Image</th>
         <th>Description</th>
         <th>Price</th>
       </tr>
       <?php foreach ($productImage as $key => $value)
          { ?>
            <tr>
              <td><img src="<?php echo $value; ?>" /></td>
              <td><?php  echo $description[$key]; ?></td>
              <td><?php  echo $price[$key]; ?></td>
            </tr>  
          <?php }
       ?>
   </table>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню