26

私の配列は次のようなものです:

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [name] => demo1
        )
    [1] => stdClass Object
        (
            [id] => 2
            [name] => demo2
        )
    [2] => stdClass Object
        (
            [id] => 6
            [name] => otherdemo
        )
)

配列全体(オブジェクトを含む)を純粋な多次元配列に変換するにはどうすればよいですか?

4

7 に答える 7

43

タイプキャストを試しましたか?

$array = (array) $object;

実はもう一つ裏技があります

$json  = json_encode($object);
$array = json_decode($json, true);

詳細についてjson_decodeは、PHP マニュアルを参照してください。2 番目のパラメーターはassocと呼ばれます。

協会

の場合TRUE、返されるオブジェクトは連想配列に変換されます。

これはまさにあなたが探しているものです。

こちらも試してみてください: Convert Object To Array With PHP (phpro.org)

于 2012-05-17T07:50:08.473 に答える
9

これを使用するだけです:

json_decode(json_encode($yourArray), true);
于 2017-06-04T16:03:15.100 に答える
7

array_walkすべてのアイテムをオブジェクトから配列に変換するために使用できます。

function convert(&$item , $key)
{
   $item = (array) $item ;
}

array_walk($array, 'convert');
于 2012-05-17T07:54:01.460 に答える
1

OOPを使用している場合、最も簡単な方法は、コードをプルしてそれ自体をクラス自体の配列に変換することです。次に、このメソッドを呼び出すだけで、返された配列に元の配列を設定します。

class MyObject {

    private $myVar;
    private $myInt;

    public function getVarsAsArray() {

        // Return the objects variables in any structure you need
        return array($this->myVar,$this->myInt);

    }

    public function getAnonVars() {

        // If you don't know the variables
        return get_object_vars($this);
    }
}

詳細については、 http: //www.php.net/manual/en/function.get-object-vars.phpを参照してください。get_object_vars()

于 2012-05-17T08:21:23.890 に答える
1

次のように、すべてのオブジェクトをキャストする必要があります。

$result = array();
foreach ($array as $object)
{
    $result[] = (array) $object
}
于 2012-05-17T07:54:14.010 に答える