如何在多维数组中打印出单个字段?

时间:2012-08-07 23:47:23

标签: php arrays

所以我为我的对象做了一个打印:print_r($ objMailer);

我得到以下内容:

mymailer Object
(
[_strRecipient:mymailer:private] => 
[_strBcc:mymailer:private] => 
[_strSubject:mymailer:private] => 
[_strEmail:mymailer:private] => 
[_arrData:mymailer:private] => Array
(
    [full_name] => brian
    [invitee_name] => test
    [email] => test@testing.com
    [captcha] => kqd2q9
)

[_arrAttachments:mymailer:private] => 
[_blnCaptcha:mymailer:private] => 1
[_arrErrors:mymailer:private] => Array
(
)

)

我需要回显/打印出'full_name'字段?我怎么能这样做呢?

4 个答案:

答案 0 :(得分:3)

你不能琐碎。由于print_r输出显示在私有成员中。

您可以在(?)mymailer对象中提供它:

return $this->_arrData['full_name'];

或使用 Reflection 使其可以从外部访问:

$refObj  = new ReflectionObject($objMailer);
$refProp = $refObj->getProperty('_arrData');
$array   = $refProp->getValue($objMailer);

echo $array['full_name'];

答案 1 :(得分:0)

如果要在mymailer类的方法中回显值,可以使用:

echo $this->_arrData['full_name'];

答案 2 :(得分:0)

由于它是私密的,您需要使用getter

答案 3 :(得分:0)

您引用的对象具有_arrData成员变量,该变量具有私有作用域解析,这意味着您无法从类外部访问它。有可能有一个公共访问器,它可以让你获得你所追求的信息,但除非你内省对象本身,否则无法判断。

我建议做类似的事情:

foreach (get_class_methods($mymailer) as $method) { echo 'M: ' . $method . '<br>'; } exit;

然后你可以看到你可以使用的方法,有可能有一个getData()方法,你可以用它来做到这一点:

$mailerData = $mymailer->getData();

var_dump($mailerData['full_name']);

甚至可能有一种获取全名的方法,如下所示:

var_dump($mymailer->getFullname());