php json_encode&解码

时间:2012-11-13 08:37:16

标签: php json

我有一个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)

2 个答案:

答案 0 :(得分:2)

将json_decode false设置为true .. 如果它是假的解码器使php对象,如果它是真的它从那个json创建PHP数组..

$eng = json_decode($en_banners, TRUE);

之后json_encode将php Object转换为json Object,php Array转换为json Array ..

P.S

取消设置后添加......

    $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);

答案 1 :(得分: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)));

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