PHP中的嵌套变量

时间:2011-08-04 12:46:05

标签: php nested-attributes

我认为我或者只是愚蠢或者其他什么,但我仍然无法理解他们。

我正在尝试从此变量$ result中访问“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;

希望有人可以给我答案,但也解释他们是如何得出这个答案的,因为所有其他Stackoverflow问题他们只提供解决方案而不是方法。

任何人都有任何提示如何导航嵌套变量。

由于

3 个答案:

答案 0 :(得分:1)

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

检查是否有其他变量可访问

答案 1 :(得分:0)

这应该是你的最后一个例子。真的,这并不难。 $ result是一个包含单个元素的数组,其中包含键“干预”。您可以使用[和]访问数组的元素。因此,使用$ result ['intervention'],您将获得一个也包含单个元素的数组:键0处的元素,它是stdClass的一个实例。你可以通过使用$ result ['intervention'] [0]来达到这个目的。如果要从该stdClass获取patient_age,可以使用 - >访问实例变量。所以,这应该有效:

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

以下将导致$ patient成为stdClass实例,然后您可以从以下位置检索patient_age:

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

答案 2 :(得分: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";


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