0

次のようなファイルに保存されたjson配列があります。

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

そして、これらのオブジェクトの 1 つを 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 配列に変換します。

PS

設定解除後に追加...

    $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 に答える