4

次のように配列を設定しています。

$myArray = array();
$myArray[] = "New array item 1";
$myArray[] = "New array item 2";
$myArray[] = "New array item 3";

json_encode() を実行すると、次のように出力されます。

["New array item 1","New array item 2","New array item 3"]

私が欲しいのは、関数がインデックスを文字列としてエンコードすることです:

{"0":"New array item 1","1":"New array item 2","2":"New array item 3"}

後で、2番目のインデックスに影響を与えずに最初のアイテムを削除できるようにします。

これを行う簡単な方法はありますか?

4

3 に答える 3

10

使用JSON_FORCE_OBJECT:

json_encode( $data, JSON_FORCE_OBJECT );

PHP 5.3 以降が必要

于 2012-11-15T09:08:58.477 に答える
4

まさにあなたが望むものではありませんが、JSON_FORCE_OBJECTオプションを使用できます:

json_encode($myArray, JSON_FORCE_OBJECT);

これは以下を生成します:

{"0":"New array item 1","1":"New array item 2","2":"New array item 3"}

配列をオブジェクトにキャストする場合も同じです:

json_encode((object)$myArray);

または:

$myArray = array(
  "0" => "New array item 1",
  "2" => "New array item 2",
  "3" => "New array item 3"
  );

 echo json_encode($myArray);

同じことを与えるでしょう:

{"0":"New array item 1","2":"New array item 2","3":"New array item 3"}
于 2012-11-15T09:10:16.280 に答える
3

PHP < 5.3 の場合は、次の方法を使用します。

<?php   

$myArray = array();
$myArray[] = "New array item 1";
$myArray[] = "New array item 2";
$myArray[] = "New array item 3";

echo json_encode((object)$myArray); // typecast the array as object

?>
于 2012-11-15T09:18:55.520 に答える