为什么“ json_encode()”的工作方式不同?

时间:2018-07-22 19:52:13

标签: php

我是PHP的新手。我在业余时间一直在做这个“待办事项”,我发现有些奇怪。

我有两个相同的数组。一个通过 json_decode()函数解码,另一个通过 foreach 循环进行解码。然后,我使用 json_encode()函数对两个数组进行了编码,结果却不同。

我的实际代码:

$data = file_get_contents( $file );
$data = json_decode( $data, true );
unset($data[$i]);

echo '<pre>';
print_r( $data );
echo '</pre>';

echo '<pre>';
print_r( json_encode($data) );
echo '</pre>';

$arr = [];
foreach ($data as $item) $arr[] = $item;

echo '<pre>';
print_r( $arr );
echo '</pre>';

echo '<pre>';
print_r( json_encode($arr) );
echo '</pre>';

die();

Screenshot of Google Chrome

希望您能理解我要指出的内容。 :(

更新:

存储文件的内容

[{"text":"hey","date":1532288364},{"text":"whatsup","date":1532288372}]

1 个答案:

答案 0 :(得分:3)

json_encode()将创建有效的JavaScript语法,该语法仅支持以索引0开头且没有空格的数组。

如果json_encode()检测到一个不满足此条件的数组,它将把它编码为一个对象,这是正确的情况。您的数组从索引1开始,无法转换为有效的JavaScript数组。