2016-09-27 11 views
1

は、私はそれがこのような何かを印刷する必要がありますAssosciativeアレイPHPの配列オブジェクトからAssociative配列を出力するには?

<?php 
require_once(dirname(__FILE__) . '/HarvestAPI.php'); 

/* Register Auto Loader */ 
spl_autoload_register(array('HarvestAPI', 'autoload')); 

$api = new HarvestAPI(); 
$api->setUser($user); 
$api->setPassword($password); 
$api->setAccount($account); 

$api->setRetryMode(HarvestAPI::RETRY); 
$api->setSSL(true); 

$result = $api->getProjects(); ?> 

として印刷したいArrayオブジェクトを持っています。

Array ([] => Harvest_Project Object ( 
       [_root:protected] => project 
       [_tasks:protected] => Array () 
       [_convert:protected] => 1 
       [_values:protected] => Array ( 
        [id] => \ 
        [client-id] => - 
        [name] => Internal 
        [code] => 
        [active] => false 
        [billable] => true 
        [bill-by] => none 
        [hourly-rate]=>- 

どのようにすればいいですか?

更新

私はvarexportをやってみました。しかし、それはこのようなものを与える

Harvest_Result::__set_state(array('_code' => 200, '_data' => array (5443367 => Harvest_Project::__set_state(array('_root' => 'project', '_tasks' => array (), '_convert' => true, '_values' => array ('id' => '564367', 'client-id' => '2427552', 'name' => 'Internal', 'code' => '', 'active' => 'false', 'billable' => 'tr 

これは私が探しているものではありません。オブジェクトには、それが持つフィールドを明確に一覧表示する必要があります。

+0

var_exportに問題がありますか? – BVengerov

+0

varexportで私の質問が更新されました。 varexportは、私が探している構造のフィールドをリストしません。 – user3402248

答えて

1

オブジェクトのプロパティの文字列表現に同様の視認性の種類を取得する必要がある場合、それはReflectionClassで非常に簡単に解決することができます:

$arrayObj = new Harvest_Project(); 
$reflection = new \ReflectionClass($arrayObj); 
$objStr = ''; 

$properties = $reflection ->getProperties(); 
foreach ($properties as $property) 
{ 
    if ($property->isPublic()) $propType = 'public'; 
    elseif ($property->isPrivate()) $propType = 'private'; 
    elseif ($property->isProtected()) $propType = 'protected'; 
    else $propType = 'static'; 

    $property->setAccessible(true); 

    $objStr .= "\n[{$property->getName()} : $propType] => " . var_export($property->getValue($arrayObj), true) .';'; 
} 
var_dump($objStr); 

出力は次のようになります。

[_foobar : private] => 42; 
[_values: protected] => array (
    0 => 'foo', 
    1 => 
    array (
    0 => 'bar', 
    1 => 'baz', 
), 
); 

警告getPropertiesは、PHPのバージョンによっては継承されないプロパティを取得することがあります。このケースでは、再帰的にすべてを取得する方法の例を参照してくださいhere

関連する問題