实际上数组上的PHP IF语句很简单

时间:2017-05-13 19:51:16

标签: php arrays if-statement

我正在为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语句也可以。 但是,如果我想使用任何其他部分,如间隔,国家性别或事件,它根本不会显示任何内容。

我想并希望它只是我没注意到的一件小事。

任何人都知道什么是错的?

1 个答案:

答案 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 />";
        }
    }
}