我有一个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)
答案 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)));
如果这些解决方案都不适用,我们需要更多数据:)