オブジェクトを非結合配列としてエンコードするのは、損失の多い操作です。オブジェクトプロパティ名/配列キーは失われます。このため、json_encode()
はオブジェクトを非結合配列としてエンコードする方法を提供しません。
PHP 5.4以降、クラスはJsonSerializable
インターフェイスを実装できます。このインターフェイス(jsonSerialize()
)によって宣言されたメソッドはjson_encode()
によって呼び出され、json_encode()
によって生成されたテキスト表現に配置する必要があるオブジェクトデータを返します。
あなたは(プロパティ名なし)オブジェクトのプロパティの値のみをエンコードしたい場合は、このようにそれを実装することができます
class MyClass implements JsonSerializable
{
public function jsonSerialize()
{
return array_values((array)$this);
}
}
(あなたがオブジェクトを復元することはできないということに注意してください(json_decode()
を使用して)json_encode()
の出力から一部の情報がエンコード中に失われたため(プロパティの名前)。
あなたのニーズに合った 'json_encode(array_values($ ar)) 'のようなものがありますか? –
JSON_FORCE_OBJECTフラグを指定しないと、非結合配列は配列 – splash58
@JonStirlingとしてコード化されます。動作しませんでした。コードサンプルを作成して質問に追加しようとします。あなたのご意見については – Dorad