0

私はcurlを使用してWebサイトからいくつかのデータをフェッチしています。私がそれを処理した後、私はそれをこの状態にすることができます:

Array ( 
[GraphicRiver] => Array ( [0] => stdClass Object 
    ( 
        [id] => 698515 
        [item] => Alien Icons Set 
        [url] => http://graphicriver.net/item/alien-icons-set/698515 
        [user] => chaoscod3r 
        [thumbnail] => http://2.s3.envato.com/files/23574322/Thumb.jpg 
        [sales] => 5 
        [rating] => 0 
        [cost] => 5.00 
        [uploaded_on] => Mon Oct 24 17:16:20 +1100 2011 
        [tags] => alien icons, clean icons, easy editing, icons pack, minimalist icons pack, resizable, simple icons, vector icons, vector shapes 
        [category] => icons/miscellaneous 
        [live_preview_url] => http://3.s3.envato.com/files/23574321/Preview.jpg 
    )
)

)

しかし、そのstdClassオブジェクトの代わりに必要なのはArrayです。では、この種の配列を書き直して、そのオブジェクトと配列を作成するにはどうすればよいでしょうか。

これは、上記のものを取得するために使用している方法です。

public function all_items_by_site($user_name) {

  $items_by_marketplace = $this->user_items_by_site($user_name);

  $marketplaces = array();

  $items = array();

  foreach ($items_by_marketplace as $key) {
     $marketplaces[] = array(
        'Marketplace'  => $key->site,
        'Items'        => $key->items
     );
  }

  foreach ($marketplaces as $key) {
     $items[$key['Marketplace']] = $this->new_files_from_user($user_name, $key['Marketplace']);
  }

  return $items;

}

このAPIラッパーを開発したいもののベースAPIラッパーとして使用しています:https ://github.com/JeffreyWay/Envato-Marketplace-API-Wrapper-in-PHP 。

4

2 に答える 2

6

stdClassオブジェクトを配列に簡単にキャストできます。

$array = (array)$object;

具体的なケースでは、次のようになります。

foreach ($array['GraphicRiver'] as &$item) {
    $item = (array)$item;
}
unset($item);
于 2012-04-08T13:21:13.907 に答える
1

これを行う最も簡単な方法は(実際にはセマンティックな方法ではありませんが)、次のような組み合わせを使用することjson_encodeですjson_decode

$array = json_decode(json_encode($orig), true);

非常に簡単ですが、大きなアレイにはお勧めしません。
もう1つの方法は、配列をループして、次のように型キャストを適用すること(array)です。

$array = array_map(function($el) {
    return (array)$el;
}, $orig);
于 2012-04-08T13:24:54.363 に答える