0

我有一个 json 数组存储在一个文件中,如下所示:

["bla bla","bla bla2","bla bla3"]

如果我想使用下面的代码从 json 数组中删除其中一个对象,则 json 将转换为另一种类型的数组,如下所示:

{"1":"bla bla","2":"bla bla2","3":"bla bla3"} 

我不希望这种情况发生,因为它在另一个地方搞砸了代码。我怎样才能做到这一点?

$eng = json_decode($en_banners, false);

unset($eng[$id]);

$myFile = "languages/banners.php";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "<?php \$de_banners='".json_encode($eng)
4

2 回答 2

2

JavaScript 数组是从零开始的,因此除非您填补空白,否则无法从带有间隙的 PHP 数组创建 JavaScript 数组:

$en_banners = '["bla bla","bla bla2","bla bla3"]';
$eng = json_decode($en_banners, false);
var_dump($eng);
$id = 0;
$eng[$id] = null; // Rather than: unset($eng[$id]);
var_dump(json_encode($eng));

如果数组键不相关,您可以简单地忽略它们:

$en_banners = '["bla bla","bla bla2","bla bla3"]';
$eng = json_decode($en_banners, false);
var_dump($eng);
$id = 0;
unset($eng[$id]);
var_dump(json_encode(array_values($eng)));

如果这些解决方案都不适用,我们需要更多数据:)

于 2012-11-13T08:48:11.200 回答
1

将您的 json_decode false 设置为 true。如果它为 false,则解码器生成 php 对象,如果它为 true,则从该 json 生成 PHP 数组。

$eng = json_decode($en_banners, TRUE);

之后 json_encode 将 php 对象转换为 json 对象,将 php 数组转换为 json 数组..

附言

取消设置后添加...

    $eng = array_values($eng);

清理数组键

$eng = json_decode($en_banners, TRUE);

unset($eng[$id]);
$eng = array_values($eng);
$myFile = "languages/banners.php";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "<?php \$de_banners='".json_encode($eng);
于 2012-11-13T08:40:22.193 回答