[解決済み] PHP オブジェクトを連想配列に変換する
2022-03-23 16:33:11
質問
私のコードは配列を使って書かれていますが、オブジェクトに格納されたデータで動作するAPIを私のウェブサイトに統合しています。
オブジェクトを配列に変換する手軽な関数が欲しいのですが。
どのように解決するのですか?
タイプキャストするだけ
$array = (array) $yourObject;
から 配列 :
オブジェクトを配列に変換した場合、その結果はオブジェクトのプロパティを要素とする配列となります。キーはメンバ変数名ですが、いくつかの例外があります。整数のプロパティにはアクセスできません。プライベート変数にはクラス名が変数名の前に付加されます。これらのプリペンドされた値の両隣にはヌルバイトがある。
例 シンプルなオブジェクト
$object = new StdClass;
$object->foo = 1;
$object->bar = 2;
var_dump( (array) $object );
出力する。
array(2) {
'foo' => int(1)
'bar' => int(2)
}
例 複合オブジェクト
class Foo
{
private $foo;
protected $bar;
public $baz;
public function __construct()
{
$this->foo = 1;
$this->bar = 2;
$this->baz = new StdClass;
}
}
var_dump( (array) new Foo );
出力(分かりやすく編集されています)。
array(3) {
'\0Foo\0foo' => int(1)
'\0*\0bar' => int(2)
'baz' => class stdClass#2 (0) {}
}
で出力します。
var_export
の代わりに
var_dump
:
array (
'' . "\0" . 'Foo' . "\0" . 'foo' => 1,
'' . "\0" . '*' . "\0" . 'bar' => 2,
'baz' =>
stdClass::__set_state(array(
)),
)
この方法で型付けすると、オブジェクトグラフのディープキャストが行われないため、publicでない属性にアクセスする場合はヌルバイトを適用する必要があります(マニュアルの引用で説明されているとおりです)。したがって、この方法はStdClassオブジェクトやパブリックプロパティのみを持つオブジェクトをキャストする際に最適です。クイック&ダーティな処理には適しています。
また、この詳細なブログ記事もご覧ください。
関連
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] オブジェクトが配列であるかどうかを確認するにはどうすればよいですか?[重複]。
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数bind_param()のbooleanに対する呼び出し [重複] [重複
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] 入力ファイルが指定されていない
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] PHPで配列をオブジェクトに変換する方法は?