使用foreach(Stripe Customer)遍历PHP对象

使用foreach(Stripe Customer)遍历PHP对象,php,stripe-payments,Php,Stripe Payments,我试图迭代存储在条带客户对象中的元数据 我可以数一数物品的数量: echo count($matchUser->data[0]->metadata); 这给了我预期的“2”。但是: foreach($matchUser->data[0]->metadata as $key => $value) { echo $key; echo $value; echo "hello"; } 不返回任何内容 元数据的Var dump如下所示: objec

我试图迭代存储在条带客户对象中的元数据

我可以数一数物品的数量:

echo count($matchUser->data[0]->metadata);
这给了我预期的“2”。但是:

foreach($matchUser->data[0]->metadata as $key => $value) {
    echo $key;
    echo $value;
    echo "hello";
}
不返回任何内容

元数据的Var dump如下所示:

object(Stripe\StripeObject)#67 (2) { ["testitem"]=> string(5) "hello" ["password_hash"]=> string(6) "myhash" }
试试这个方法

public function __toArray($recursive = false)
{
    if ($recursive) {
        return Util\Util::convertStripeObjectToArray($this->_values);
    } else {
        return $this->_values;
    }
}
像这样:

$matchArray = $matchUser->__toArray();
要深入了解可用的方法,请查看以下url:

希望它有帮助

试试这个方法

public function __toArray($recursive = false)
{
    if ($recursive) {
        return Util\Util::convertStripeObjectToArray($this->_values);
    } else {
        return $this->_values;
    }
}
像这样:

$matchArray = $matchUser->__toArray();
要深入了解可用的方法,请查看以下url:


希望能有所帮助

我知道这个问题已经提出几个月了,而且已经有了公认的答案。不过,我认为有更好的方法

我认为用于Stripe API的PHP库的开发人员在一些方法前面加了_u(双下划线)以表示该方法是受保护的还是私有的,这是PHP中不存在方法可见性时的一个老惯例。现在_u_u_uu前缀保留给魔术方法,如中所述:

PHP保留所有以_u开头的函数名

在仔细查看了之后,我认为下面定义的
jsonSerialize
方法是一个更好的选择

公共函数jsonSerialize()
{
将$this->\uuuuuuu返回数组(true);
}
您可以这样使用它:

$matchArray = $matchUser->__toArray();
$matchUserArray=$matchUser->jsonSerialize();
//输出“你好”
echo$matchUserArray['data'][0]['metadata']['testitem']

我知道这个问题已经提出几个月了,而且已经有了公认的答案。不过,我认为有更好的方法

我认为用于Stripe API的PHP库的开发人员在一些方法前面加了_u(双下划线)以表示该方法是受保护的还是私有的,这是PHP中不存在方法可见性时的一个老惯例。现在_u_u_uu前缀保留给魔术方法,如中所述:

PHP保留所有以_u开头的函数名

在仔细查看了之后,我认为下面定义的
jsonSerialize
方法是一个更好的选择

公共函数jsonSerialize()
{
将$this->\uuuuuuu返回数组(true);
}
您可以这样使用它:

$matchArray = $matchUser->__toArray();
$matchUserArray=$matchUser->jsonSerialize();
//输出“你好”
echo$matchUserArray['data'][0]['metadata']['testitem']

以及
var\u dump($matchUser->data[0]->metadata)
echo gettype($matchUser->data[0]->metadata)
说了什么?请添加元数据的打印输出。您是否尝试将元数据作为数组而不是对象?上面添加了var dump-gettype返回objectForeach只能通过数组循环,它可以通过对象公共属性或实现某种形式的\Iterator接口的对象循环。由于这是一个条带对象,我会假设这些属性不是公共的,尤其是密码哈希,以及
var\u转储($matchUser->data[0]->metadata)
echo gettype($matchUser->data[0]->metadata)
say?请添加元数据的打印输出。您是否尝试将元数据作为数组而不是对象?上面添加了var dump-gettype返回objectForeach只能通过数组循环,它可以通过对象公共属性或实现某种形式的\Iterator接口的对象循环。由于这是一个条带对象,我会假设这些属性不是公共的,尤其是password_Hash,它只是取了我想要迭代的对象的一部分,并使用了这个函数。它只是取了我想要迭代的对象的一部分,并使用了这个函数。