PHP如何将JSON中的布尔类型vpn字段值正确写入本地文件
问题原因
- 核心原因是PHP的布尔值字符串转换规则:布尔值
true会被自动转换为字符串"1",布尔值false会被自动转换为空字符串"",你直接写入false时相当于写入空内容,所以看起来就像没有写入成功 - 额外排查点:你在
fopen前加了@错误屏蔽符,如果是文件路径错误、PHP进程没有目标目录写入权限导致fopen失败,你也看不到对应的报错提示,会误以为是值写入失败
解决方法
首先去掉fopen前的@符号,先确认文件可以正常打开,如果打开报错先修正目录权限或者文件路径。如果文件打开正常,把布尔值转换为可被正常写入的字符串格式再写入即可:
如果你需要写入true/false的文本状态,用三元运算符转换即可:
<?php $status = $details_3->security->vpn; // 布尔值转对应文本 $writeContent = $status ? 'true' : 'false'; $fp = fopen('data.html', "a"); if (!$fp) { echo 'error'; } else { fwrite($fp, $writeContent); fwrite($fp, "\r\n"); fclose($fp); } ?>
如果你需要写入1/0的数字状态,直接强转为int类型即可:
$writeContent = (int)$status;
内容的提问来源于stack exchange,提问作者PhiDAo
相关产品推荐
相关产品推荐

