我把用户的一些数据作为JSON储存为文件,每一行有类似一下格式的数据
{"a":"aa","b":"bb"}
...
{"a":"123","b":"234"}
我现在用一个循环遍历这个文件,并且当遇到a为123的时候就停止遍历并且输出这行数据的b的值。
循环什么的用while循环整个文件,然后每循环一行数据就进行一次判断
但是这里有一个问题,php用json_decode出来的结果是对象(放到$obj内),也就是说不能像变量一样使用,当我的while拿到每行数据并且要对a是否为123进行判断的时候,就没办法了
if($obj -> a = "123")
这行代码就没用了,那应该怎么办呢?
{"a":"aa","b":"bb"}
...
{"a":"123","b":"234"}
我现在用一个循环遍历这个文件,并且当遇到a为123的时候就停止遍历并且输出这行数据的b的值。
循环什么的用while循环整个文件,然后每循环一行数据就进行一次判断
但是这里有一个问题,php用json_decode出来的结果是对象(放到$obj内),也就是说不能像变量一样使用,当我的while拿到每行数据并且要对a是否为123进行判断的时候,就没办法了
if($obj -> a = "123")
这行代码就没用了,那应该怎么办呢?
echo $obj->b;
//break;退出循环
}
得到的就是数组
其实无关你得到是数组还是对象,代码写错了,像1楼那样进行判断if($obj->a=='123'){
//some code.
}
Notice: Trying to get property of non-object in E:\PHPnow\htdocs\qnw\processer\look.php on line 8
第八行就是这个if语句
if('123'== $obj->a)
忘记了,此处的123我用的是一个变量$asd = "123"
但是如果不是数组,即便加了一个=,仍然是错误
我此处的123是用的变量$asd = "123"
$sid = $_GET["sid"]; //从url获得sid
$creator = substr($_GET["sid"],14); //切掉前14个字符
$file = fopen("../people/".$creator."/sponsor.file", "r") or exit("Unable to open file!"); //打开用户配置文件
while(!feof($file)) //循环开始
{
$obj = json_decode(fgets($file)); //把拿到的一行数据进行decode
if($obj->sid = $sid) //如果相等
{
$asd = $obj->content; //把这行数据的content内容赋到$asd
}
}
echo $asd; //推出循环输出符合的值
fclose($file);
?>
后来加了true和=就解决了
Notice: Trying to get property of non-object in E:\PHPnow\htdocs\qnw\processer\look.php on line 8Notice: Trying to get property of non-object in E:\PHPnow\htdocs\qnw\processer\look.php on line 8Notice: Trying to get property of non-object in E:\PHPnow\htdocs\qnw\processer\look.php on line 8Notice: Undefined variable: asd in E:\PHPnow\htdocs\qnw\processer\look.php on line 13
{"sid":"XXXXXXXXX","content":"XXXXXXXXXXX"}
$s = '{"sid":"XXXXXXXXX","content":"XXXXXXXXXXX"}';
$p = json_decode($s);
if($p->sid == "XXXXXXXXX") echo 'ok';