PHP如何从csv文件的所有列中获取数据并将其存储在数组中

PHP如何从csv文件的所有列中获取数据并将其存储在数组中,php,Php,我试图从csv文件中读取第三列到第十二列的每一列,并将所有数据存储在一个数组中。此时,我只得到最后一列:这是我的文件: 这是我的密码: <?php $in_file = 'gabriel-images-urls.csv'; $fd = fopen($in_file, "r"); $new_array[]= array(); $start_row = 2; $i = 2;//define row count flag while (($row = fgetcsv($fd)) !

我试图从csv文件中读取第三列到第十二列的每一列,并将所有数据存储在一个数组中。此时,我只得到最后一列:这是我的文件:

这是我的密码:

<?php

$in_file = 'gabriel-images-urls.csv';

$fd = fopen($in_file, "r");

$new_array[]= array();

$start_row = 2;

$i = 2;//define row count flag


while (($row = fgetcsv($fd)) !== FALSE) {
    for ($col=3; $col<=11; $col++) {         
        $row[] = $row[$col];
        if($i >= $start_row){
           $url = $row[$col];
           $url_name = basename($url);
           $new_array[] = [$row[0], $row[1],$url_name];
      }
   $i++;
 }
?>
我希望所有链接都位于数组的第三个元素,用逗号分隔

<?php

$in_file = 'gabriel-images-urls.csv';
$fd = fopen($in_file, "r");
$new_array= array();
$i=0;
while (($row = fgetcsv($fd)) !== FALSE)
{
    if($i!=0)
    {
        $url_array = array();
        for ($col=2; $col<=11; $col++) 
        {
            if(isset($row[$col]) && trim($row[$col])!=null)
            {
                $url = $row[$col];
                $url_array[] =$url;
            }

        }

        $new_array[] = array($row[0],$row[1],implode($url_array,','));
    }
    else if($i==0)
    {
        $i++;
    }
}

echo '<pre>';
print_r($new_array);
echo '</pre>';

?>

我还优化了您的代码,以停止每次递增行标志。检查它是否适合您。

请添加您的预期输出!我在帖子里加的!到目前为止,您尝试调试给定代码的是什么?小提示:您确定要将所有内容附加到for循环中的$new_数组中吗?这可能会在每个CSV行中增加8个新元素。另外,对于给定的输入,单个数组元素就是整个结果吗?如果是,那么背后的规则是什么?事实上,对于第三个元素,我只得到逗号,而不是实际的链接。你可以在帖子中共享你的csvIt吗。[0]=>142386[1]=>142386[2]=>,,,,,,,,,,,这是我的结果。
<?php

$in_file = 'gabriel-images-urls.csv';
$fd = fopen($in_file, "r");
$new_array= array();
$i=0;
while (($row = fgetcsv($fd)) !== FALSE)
{
    if($i!=0)
    {
        $url_array = array();
        for ($col=2; $col<=11; $col++) 
        {
            if(isset($row[$col]) && trim($row[$col])!=null)
            {
                $url = $row[$col];
                $url_array[] =$url;
            }

        }

        $new_array[] = array($row[0],$row[1],implode($url_array,','));
    }
    else if($i==0)
    {
        $i++;
    }
}

echo '<pre>';
print_r($new_array);
echo '</pre>';

?>