PHP では、データ操作を容易にするためにオブジェクトを配列に変換する必要がある場合があります。通常、オブジェクトの属性名が配列のキー値と同じである場合、次のように object-to-array 関数を直接使用できます。
$array = (array) $obj; // $obj为对象,$array为数组
ただし、オブジェクトの属性名がたとえば、属性名にアンダースコア、ハイフン、大文字などが含まれている場合、この時点で属性名を手動で処理し、正当な配列キー名に変換する必要があります。以下に、不規則なオブジェクトを配列に変換するいくつかの方法を紹介します。
方法 1: get_object_vars() 関数を使用する
get_object_vars() 関数を使用すると、オブジェクトのすべての属性と属性値を取得し、連想配列。この関数を使用してオブジェクト属性リストを取得し、それを処理できます。
$obj = new stdClass(); $obj->user_name = '张三'; $obj->user_age = 20; $obj->{'user_city-name'} = '北京'; $arr = array(); $vars = get_object_vars($obj); foreach($vars as $key => $value){ $arr[str_replace('_', '-', $key)] = $value; } var_export($arr);
上記の例では、get_object_vars() 関数を使用してオブジェクトのすべての属性と属性値を取得し、foreach ループを使用して属性名のアンダースコアを走査して変換します。ハイフン。最終的に変換された配列は次のとおりです。
array ( 'user_name' => '张三', 'user_age' => 20, 'user-city-name' => '北京', )
このメソッドはオブジェクトのプロパティのみを処理し、継承されたプロパティは含まれないことに注意してください。
方法 2: json_encode() 関数と json_decode() 関数を使用する
json_encode() 関数と json_decode() 関数を使用してオブジェクトを JSON に変換することもできます。形式を指定してから、 json_decode() 関数を使用して JSON 形式を配列に変換します。
$obj = new stdClass(); $obj->user_name = '张三'; $obj->user_age = 20; $obj->{'user_city-name'} = '北京'; $json_str = json_encode($obj); $arr = json_decode($json_str, true); foreach($arr as $key => $value){ $new_key = str_replace('_', '-', $key); unset($arr[$key]); $arr[$new_key] = $value; } var_export($arr);
上の例では、 json_encode() 関数を使用してオブジェクトを JSON 形式に変換し、次に json_decode() 関数を使用して JSON 形式を配列に変換します。次に、foreach ループを使用して配列を走査し、属性名のアンダースコアをハイフンに変換します。最終的に変換された配列は、方法 1 と同じです。
方法 3: array_map() 関数を使用する
array_map() 関数は、配列内の各要素にコールバック関数を適用し、新しい配列を返すことができます。この関数を使用して、プロパティ名のアンダースコアをハイフンに変換できます。
$obj = new stdClass(); $obj->user_name = '张三'; $obj->user_age = 20; $obj->{'user_city-name'} = '北京'; $arr = (array) $obj; $arr = array_map(function($key){ return str_replace('_', '-', $key); }, array_keys($arr)); $arr = array_combine($arr, (array) $obj); var_export($arr);
上記の例では、array_map 関数を使用して属性名のアンダースコアをハイフンに変換し、array_keys() 関数を使用してオブジェクトの属性リストを取得し、array_combine( ) 属性名と属性値を変換する関数 配列に変換します。最終的に変換された配列は、方法 1 および方法 2 と同じです。
概要:
オブジェクトを配列に変換する必要があり、不規則な属性名が発生した場合は、get_object_vars()、json_encode()、array_map() およびその他の関数を使用して処理できます。 。これらのメソッドを通じて、不規則なオブジェクトを規則的な配列に簡単に変換して、データ操作を容易にすることができます。
以上が不規則なオブジェクトを配列に変換するいくつかの方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。