2011-08-04 159 views
0

我覺得我不是愚蠢的就是什麼,但是我仍然無法擺脫困境。PHP中的嵌套變量

我想從這個變量$結果中訪問「patient_age」。

這是var轉儲。

array(1) { 
    ["intervention"]=> 
    array(1) { 
    [0]=> 
    object(stdClass)#23 (21) { 
    ["intervention_id"]=> 
     string(1) "1" 
     ["patient_id"]=> 
     string(1) "1" 
     ["name_id"]=> 
     string(1) "1" 
     ["department_id"]=> 
     string(1) "1" 
     ["dosage_id"]=> 
     NULL 
     ["edocument"]=> 
     string(10) "Bruce1.jpg" 
     ["user_id"]=> 
     string(1) "0" 
     ["duration"]=> 
     string(8) "02:26:00" 
     ["submitted"]=> 
     string(19) "2011-07-31 19:56:29" 
     ["intervention_comment"]=> 
     NULL 
     ["patient_age"]=> 
     string(2) "34" 
     ["patient_height"]=> 
     string(4) "1.34" 
     ["patient_weight"]=> 
     string(2) "45" 
     ["patient_gender"]=> 
     string(4) "Male" 
     ["department_name"]=> 
     string(10) "Cardiology" 
     ["intervention_name_id"]=> 
     string(1) "1" 
     ["intervention_name"]=> 
     string(5) "IVH 2" 
     ["intervention_description"]=> 
     string(0) "" 
     ["dosage_emitted"]=> 
     NULL 
     ["dosage_absorbed"]=> 
     NULL 
     ["dosage_period"]=> 
     NULL 
    } 
    } 
} 

我曾嘗試:

$result[0]->patient_age; 
$result[1]->patient_age; 
$result['intervention']->patient_age; 
$result['intervention'][0]->patient_age; 

希望有人能給我一個答案,但也解釋了他們是如何來到這個答案,因爲所有其他的#1的問題,他們只是給瞭解決方案,但不是方法。

任何人都有任何提示如何瀏覽嵌套變量。

感謝

+2

最後一個例子('$結果[ '干預'] [0] - > patient_age;')應該工作 - 你檢查錯誤日誌? –

+0

對不起,這是一個類型,是$結果,而不是$結果,我覺得更愚蠢:( – sqlmole

回答

0

這應該是你的最後一個例子。這並不難,真的。 $ result是一個包含單個元素的數組,其中包含鍵「intervention」。您可以使用[和]來訪問數組的元素。因此,使用$ result ['intervention'],您將得到一個也包含單個元素的數組:位於鍵0的元素,它是stdClass的一個實例。你可以通過使用$ result ['intervention'] [0]來達到目的。如果您想從stdClass中獲取patient_age,則可以使用 - >來訪問實例變量。所以,這應該工作:

echo $result['intervention'][0]->patient_age; 

下會導致$患者作爲stdClass的實例,然後你可以檢索patient_age:

$patient = $result['intervention'][0]; 
echo $patient->patient_age; 
+0

感謝您的解釋,事實證明,我的變量傳遞了一個錯字,是$結果應該是$結果在我的查看。:( – sqlmole

1
$object=$result['intervention'][0]; 
print $object->patient_age; 

是否有其他的變量accessable

0

$結果[0] - > patient_age ;

將工作*只要patient_age是一個公共變量*。如果它是私人的或受保護的,您需要使用對象內的方法來訪問它。

你從來沒有說過你試過的東西發生了什麼。空值?錯誤/警告消息?

證明:

<?php 

class iv { 
    var $patient_age; 
    function __construct($val) 
    { 
      $this->patient_age=$val; 
    } 
} 

$t=new iv(40); 
$result=array(0=>$t); 
var_dump($result) . "\n\n"; 
print "val = " . $result[0]->patient_age . "\n\n"; 


[[email protected] ~]$ php -q t.php 
array(1) { 
    [0]=> 
    object(iv)#1 (1) { 
    ["patient_age"]=> 
    int(40) 
    } 
} 
val = 40 
[[email protected] ~]$