2

重複の可能性:
配列と配列内のオブジェクトを純粋な配列に変換する

私は現在配列を持っていますが、それが標準の配列である必要がありますが、それが機能するために、それをオブジェクトに変換している別の関数に渡されています。次のオブジェクト配列を標準配列に変換する必要があります。

[files] => stdClass Object
        (
            [1] => stdClass Object
                (
                    [name] => price-my-insurance.jpg
                    [type] => image/jpeg
                    [tmp_name] => /Applications/MAMP/tmp/php/phpfmRfyN
                    [error] => 0
                    [size] => 911376
                )

            [2] => stdClass Object
                (
                    [name] => sideshows.jpg
                    [type] => image/jpeg
                    [tmp_name] => /Applications/MAMP/tmp/php/phpTamdHy
                    [error] => 0
                    [size] => 967656
                )

            [3] => stdClass Object
                (
                    [name] => the-beer-scale.jpg
                    [type] => image/jpeg
                    [tmp_name] => /Applications/MAMP/tmp/php/phpwCmwlW
                    [error] => 0
                    [size] => 742219
                )

            [4] => stdClass Object
                (
                    [name] => the-little-lace.jpg
                    [type] => image/jpeg
                    [tmp_name] => /Applications/MAMP/tmp/php/phpFnUuf8
                    [error] => 0
                    [size] => 939963
                )

            [5] => stdClass Object
                (
                    [name] => varrstoen-australia.jpg
                    [type] => image/jpeg
                    [tmp_name] => /Applications/MAMP/tmp/php/phpUtWyk1
                    [error] => 0
                    [size] => 2204400
                )

        )

これに:

Array
(
    [1] => Array
        (
            [name] => price-my-insurance.jpg
            [type] => image/jpeg
            [tmp_name] => /Applications/MAMP/tmp/php/phpfmRfyN
            [error] => 0
            [size] => 911376
        )

    [2] => Array
        (
            [name] => sideshows.jpg
            [type] => image/jpeg
            [tmp_name] => /Applications/MAMP/tmp/php/phpTamdHy
            [error] => 0
            [size] => 967656
        )

    [3] => Array
        (
            [name] => the-beer-scale.jpg
            [type] => image/jpeg
            [tmp_name] => /Applications/MAMP/tmp/php/phpwCmwlW
            [error] => 0
            [size] => 742219
        )

    [4] => Array
        (
            [name] => the-little-lace.jpg
            [type] => image/jpeg
            [tmp_name] => /Applications/MAMP/tmp/php/phpFnUuf8
            [error] => 0
            [size] => 939963
        )

    [5] => Array
        (
            [name] => varrstoen-australia.jpg
            [type] => image/jpeg
            [tmp_name] => /Applications/MAMP/tmp/php/phpUtWyk1
            [error] => 0
            [size] => 2204400
        )

)

私はこれを行うためにforeachループで立ち往生しています。

編集:

これが出力のスクリーンショットです

4

2 に答える 2

3

私はそれを怠惰な方法で行います:

$jsonstring = json_encode($theObj);
$array = json_decode($jsonstring,true);

PHPDoc

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

編集:私はこれをテストしました:

<?php
$o = new stdClass();
$o->property = "somepath";

$a = array($o,$o);
$js = json_encode($a);
$array = json_decode($js,true);
var_dump($array);
?>

そしてここに出力があります:

array(2) {
  [0]=>
  array(1) {
    ["property"]=>
    string(8) "somepath"
  }
  [1]=>
  array(1) {
    ["property"]=>
    string(8) "somepath"
  }
}
于 2012-12-20T00:25:35.930 に答える
0
$array = array();

foreach ($files as $k => $v) {
    if (!is_array($array[$k])) {
        $array[$k] = array();
    }

    foreach ($v as $j => $u) {
        $array[$k][$j] = $u;
    }
}

それが機能するかどうかは完全にはわかりません。json_decode(json_encode($obj),true)@Ibuが言うように、おそらく怠惰な方法を実行する方が簡単です。

于 2012-12-20T00:26:04.683 に答える