我正在为uni做一件小事。 但是,以下是整个事情中的一个小问题,这使我无法继续前进。
我读了一个包含名称数据的文件,并希望根据目前为止使用if语句的不同细节对其进行排序。这就是问题发生的地方:
for($i ;$i < count($file); $i++){
if($i>0) {
$data = explode(",", $file[$i]);
echo $data[0] . $data[1] . $data[2] . $data[3] . $data[4]; //this works
?><br /><?php
//The following one works too.
if($data[0] == "Ann"){
echo $data[0];
?><br /><br /><?php
}
// All these don't work
if($data[3] == "californien") {
echo 'Name: '. $data[0] . ', Occurences: '. $data[4];
?><br /><?php
}
if($data[2] == "20-30"){
echo $data[0];
?><br /><?php
}
if($data[1] == "w"){
echo $data[0];
?><br /><?php
}
}
}
csv文件中的示例如下所示:
(姓名,性别,年份间隔,状态,出现次数)
Mary, w, 10-20, californien, 88
在某些$ data数组元素上使用echo工作正常。 在名称($ data [0])上使用if语句也可以。 但是,如果我想使用任何其他部分,如间隔,国家性别或事件,它根本不会显示任何内容。
我想并希望它只是我没注意到的一件小事。
任何人都知道什么是错的?
答案 0 :(得分:1)
根据您显示的输入: -
(Name, sex, year interval, state, occurences)
Mary, w, 10-20, californien, 88
你的价值似乎有空格。所以你可以解决它,如下所示: -
1. explode()
", "
(空格逗号): -
$data = explode(", ", $file[$i]);
2.或者使用trim()
,如下所示: -
if(trim($data[3]) == "californien") { // and so-on for others
干净的代码必须如下所示 -
for($i ;$i < count($file); $i++){
if($i>0) {
$data = explode(", ", $file[$i]);
//exploded with comma and spaces but confirm again through trim()
if(trim($data[0]) == "Ann"){
echo $data[0]."<br/><br/>";
}
if(trim($data[1]) == "w"){
echo $data[0]."<br />";
}
if(trim($data[2]) == "20-30"){
echo $data[0]."<br />";
}
if(trim($data[3]) == "californien") {
echo 'Name: '. $data[0] . ', Occurences: '. $data[4]."<br />";
}
}
}