2016-09-27 6 views
1

난 내가 뭔가를 이런 식으로 뭔가를 인쇄해야 Assosciative 배열PHP의 Array 객체에서 Associative Array를 인쇄 하시겠습니까?

<?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 ([] => 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.