PHP加载对象数组

时间:2017-05-25 09:41:33

标签: object

我想用.csv

中的对象加载我的数组

当我这样写JSON就像强制字符串一样,没关系,我的代码运行正常。

当我尝试制作对象并将它们加载到数组中时,新对象会覆盖数组中的所有对象,并且我得到一个充满相同值的数组。对我的错误有任何建议吗?

最后,变量内容给出了有效的JSON(没有'[]'括号),但是数组contentArr给出了完整相同对象的数组......

这是代码:

            $content = '';
            $contentArr = array();
            $Obj = new stdClass();
            $count = 0;
            while ($csv = fgetcsv($file,1000,",")) {
                    $content .= "{\"number\":\"".$csv[0]=Filter($csv[0])."\",\"message\":\"".$csv[1]."\"},";
                    $count++;
                    $Obj -> number = $csv[0]=Filter($csv[0]);
                    $Obj -> message = $csv[1];
                    $contentArr[] = $Obj;
            }
            $content = substr($content, 0, -1);

2 个答案:

答案 0 :(得分:0)

我希望此代码可以帮助您

 $openFile = fopen($file, "r");
 while(!feof($openFile)){
    $csv = fgetcsv($file);
    //your code here
 }
 fclose($openFile);

答案 1 :(得分:0)

解决了自己。

我的错误在于我只将链接更改为我在while循环之前创建的一个对象。当我在while循环中移动对象创建INTO时,我正在为我加载到数组中的每个新数据创建新对象。

代码:

        $content = '';
        $contentArr = array();
        //$Obj = new stdClass(); ----> this was my mistake
        $count = 0;
        while ($csv = fgetcsv($file,1000,",")) {
                $content .= "{\"number\":\"".$csv[0]=Filter($csv[0])."\",\"message\":\"".$csv[1]."\"},";
                $count++;
                $Obj = new stdClass();// ----> that's how it should be
                $Obj -> number = $csv[0]=Filter($csv[0]);
                $Obj -> message = $csv[1];
                $contentArr[] = $Obj;
        }
        $content = substr($content, 0, -1);