使用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,它只是取了我想要迭代的对象的一部分,并使用了这个函数。它只是取了我想要迭代的对象的一部分,并使用了这个函数。