2014-02-05 15 views
0

读我有一个CSV类似于以下内容的文件:使用前一阵值如果电流值是空的 - 从CSV

"Red",Red Coat 
"",Red Dog 
"",Red Car 
"Blue",Blue Stuff 
"Green",Green Stuff 
"",Green Grass 

我可以阅读并通过PHP是输出。

if (($handle = fopen("file.csv", "r")) !== FALSE) { 
$row=0; 
$csv_row = array(); 
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
$csv_row = $data; 

     $previous=$csv_row[0] 
     $colour=$csv_row[0] 
     if $colouris null then $colour=$previous; 
     echo $colour." ".$csv_row[1]."<BR>"; 

} 
fclose($handle); 
} 

然后这会显示输出和空白的缺失项目。

我不是开发人员,所以原谅下面的问题和难看的逻辑。如果它的空白,我想为下一个$颜色使用$ color的现有值。

因此,像:

 $previous=$csv_row[0] 
     $colour=$csv_row[0] 
     if $colour is null then $colour=$previous; 

所以我的CSV会告诉我:

Red Red Coat 
Red Red Dog (previously Colour was empty) 
Red Red Car (previously Colour was empty) 
Blue Blue Stuff 
Green Green Stuff 
Green Green Grass (previously Colour was empty) 

任何帮助表示赞赏!

+0

我不知道,但我不认为这是空的,我认为它的值是空的,尝试,如果$颜色==“” – bart2puck

回答

1

更改此:

if $colour is null then $colour=$previous; 

要这样:

if (!$colour) 
{ 
    $colour = $previous; 
} 

所以,如果$ color为空,或为空,$颜色会从$以往的价值。

另外,我觉得你可能要改变这一点:

$previous=$csv_row[0]; 
$colour=$csv_row[0]; 

要这样:

$previous=$csv_row[0]; 
$colour=$csv_row[1]; 
1

你只需要在你的代码改变量小。前$变量不是必需的。

这工作 -

if (($handle = fopen("a.php", "r")) !== FALSE) { 
$row=0; 
$csv_row = array(); 

$color = ""; 
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    $csv_row = $data; 
    //Don't update $color if no color available. 
    if($csv_row[0] != null){ 
     $color = $csv_row[0]; 
    } 
    echo $color." ".$csv_row[1]."<BR>"; 
} 
fclose($handle); 
} 

/* 
OUTPUT: 
Red Red Coat 
Red Red Dog 
Red Red Car 
Blue Blue Stuff 
Green Green Stuff 
Green Green Grass 
*/ 
+0

谢谢两位,我结束了使用它,因为它是我的直接复制粘贴。非常感激。 – Gripsiden