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


How can I print out a single field in my multidimensional array?

所以我为我的对象做了一个打印: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"字段? 我该怎么做呢?

你不能小道理。如print_r输出所示,它位于私有成员中。

您可以从您的(? mymailer对象:

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

或者使用反射使其可从外部访问:

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

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

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

由于它是私有的,因此您需要使用 getter

您引用的对象具有具有私有作用域解析的 _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());