【问题标题】:not getting proper data which is fetched from csv file没有从 csv 文件中获取正确的数据
【发布时间】:2015-08-16 00:23:02
【问题描述】:

我的 csv 文件具有两个字段图像名称和电子邮件,如下所示

img/img (1), a@gmail.com

我正在尝试在图像弹出窗口(灯箱)上显示此数据作为该图像的标题。我首先尝试应用以下图像组中的第一张图像。但它显示的输出类似于Array Array 而不是img/img (1) a@gmail.com

 <ul id="itemContainer">
   <?php
    $file_handle = fopen("imggallery.csv", "r");
    while (!feof($file_handle)) {
    $lines_of_text[] = fgetcsv($file_handle, 1024);
    }
    fclose($file_handle);
    foreach ( $lines_of_text as $line_of_text): ?>

        <li><a href="img/img (1).jpg" data-lightbox="imggallery" data-title="<?php print $lines_of_text[0].$lines_of_text[1];?>"><img src="img/img (1).jpg" alt="image"></a></li>

   <?php endforeach; ?>     

                    <li><a href="img/img (2).jpg" data-lightbox="imggallery" data-title="My caption"><img src="img/img (2).jpg" alt="image"></a></li>
                     <li><a href="img/img (3).jpg" data-lightbox="imggallery"><img src="img/img (3).jpg" alt="image"></a></li>
                    <li><a href="img/img (4).jpg" data-lightbox="imggallery"><img src="img/img (4).jpg" alt="image"></a></li>
                    <li><a href="img/img (5).jpg" data-lightbox="imggallery"><img src="img/img (5).jpg" alt="image"></a></li>
                    <li><a href="img/img (6).jpg" data-lightbox="imggallery"><img src="img/img (6).jpg" alt="image"></a></li>
                    <li><a href="img/img (7).jpg" data-lightbox="imggallery"><img src="img/img (7).jpg" alt="image"></a></li>
                    <li><a href="img/img (8).jpg" data-lightbox="imggallery"><img src="img/img (8).jpg" alt="image"></a></li>
                    <li><a href="img/img (9).jpg" data-lightbox="imggallery"><img src="img/img (9).jpg" alt="image"></a></li>
                    <li><a href="img/img (10).jpg" data-lightbox="imggallery"><img src="img/img (10).jpg" alt="image"></a></li>

 </ul>

有人知道该怎么做吗?

编辑:图像被以下代码重复:

 <ul id="itemContainer">
 <?php

$file_handle = fopen("imggallery.csv", "r");

while (!feof($file_handle)) {

$lines_of_text[] = fgetcsv($file_handle, 1024);
}
fclose($file_handle);
foreach ( $lines_of_text as $line_of_text): ?>
                <li><a href="img/img (1).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (1).jpg" alt="image"></a></li>
                <li><a href="img/img (2).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (2).jpg" alt="image"></a></li>
                 <li><a href="img/img (3).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (3).jpg" alt="image"></a></li>
                <li><a href="img/img (4).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (4).jpg" alt="image"></a></li>
                <li><a href="img/img (5).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (5).jpg" alt="image"></a></li>
                <li><a href="img/img (6).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (6).jpg" alt="image"></a></li>
                <li><a href="img/img (7).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (7).jpg" alt="image"></a></li>
                <li><a href="img/img (8).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (8).jpg" alt="image"></a></li>
                <li><a href="img/img (9).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (9).jpg" alt="image"></a></li>
                <li><a href="img/img (10).jpg" data-lightbox="imggallery" data-title="<?php print $line_of_text[0].$line_of_text[1];?>"><img src="img/img (10).jpg" alt="image"></a></li>
 <?php endforeach; ?>                  

      </ul>

更新的 csv 文件如下:

img/img (1),a@gmail.com
img/img (2),b@gmail.com
img/img (3),c@gmail.com
img/img (4),d@gmail.com
img/img (5),e@gmail.com
img/img (6),f@gmail.com
img/img (7),g@gmail.com
img/img (8),h@gmail.com
img/img (9),i@gmail.com
img/img (10),j@gmail.com

【问题讨论】:

  • var_dump($line_of_text);在使用它之前。它打印什么?
  • @ user4035:你能告诉我如何检查吗?作为这个 csv 函数的新手。
  • foreach ($lines_of_text as $line_of_text): var_dump($line_of_text);?>
  • @novice 您只需将var_dump($lines_of_text) 行添加到您的代码中,即可查看该变量中实际存储的内容。除此之外,您还应该查看函数str_getcsv。这是来自php.net/manual/en/function.str-getcsv.php 的示例 $csv = array_map('str_getcsv', file('data.csv'));这将获取您的整个 CSV 文件并将其解析为一个数组。
  • @user4035 :array (size=2) 0 =&gt; string 'img/img (1)' (length=11) 1 =&gt; string 'a@gmail.com' (length=11) 结果是这样的。

标签: php html mysql csv


【解决方案1】:

错误在这里:

data-title="<?php print $lines_of_text[0].$lines_of_text[1];?>

使用这个:

data-title="<?php print $line_of_text[0].$line_of_text[1];?>

不是“线条”而是“线条”。 "$lines_of_text" 是一个二维数组,包含从 csv 读取的所有行。你需要逐行遍历它。

更新

您必须在循环内仅输出 1 张图像:

foreach ( $lines_of_text as $line_of_text): 
      $withoutExt = preg_replace('/.*\\/(.*)\\.[^.\\s]{3,4}$/', '$1', $line_of_text[0]);
?>
       <li>
           <a href="<?php print $line_of_text[0]; ?>" data-lightbox="imggallery" 
           data-title="<?php print $withoutExt.$line_of_text[1];?>">
               <img src="<?php print $line_of_text[0]; ?>" alt="image">
           </a>
        </li>
 <?php endforeach; ?>    

    

【讨论】:

  • 哦,是的。现在数据显示正确。但显示三张图片。
  • @novice 您的 csv 文件中有多少张图片?什么不正确?
  • @user4035:我已经用 10 张图片和电子邮件更新了 csv 文件。还更新了上面的代码。但是图像越来越重复,你能告诉我 foreach 循环应该如何,以获得不同的标题吗?
  • @novice 查看更新。你想要字幕在哪里?数据标题属性?
  • @ user4035:是的。你做对了。要遵循您的更新代码,我应该将img/img (1).jpg 等存储在我的 csv 文件中吗?因为现在src 就像img/img (1) 所以图像没有被显示。那么图片的标题将是这样的img/img (1).jpg a@gmail.com
【解决方案2】:

你在使用变量名时犯了一个粗心的错误。

$lines_of_text - 变量数组, $line_of_text - $lines_of_text 变量数组中的单个值

但在 $lines_of_text 变量的循环中,您使用了相同的数组变量而不是 $line_of_text 作为数据标题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2021-12-06
    • 2020-06-21
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多