通过索引访问对象元素
Accessing object element by index
我正在使用 eBay API returns:
DTS\eBaySDK\Types\RepeatableType Object
(
[data:DTS\eBaySDK\Types\RepeatableType:private] => Array
(
[0] => 60
)
[position:DTS\eBaySDK\Types\RepeatableType:private] => 0
[class:DTS\eBaySDK\Types\RepeatableType:private] => DTS\eBaySDK\Shopping\Types\NameValueListType
[property:DTS\eBaySDK\Types\RepeatableType:private] => Value
[expectedType:DTS\eBaySDK\Types\RepeatableType:private] => string
)
... 如果我尝试像这样访问它:
echo $ItemSpecific->Value->{0};
...我收到此错误:
Notice: Undefined property: DTS\eBaySDK\Types\RepeatableType::[=12=] in ...
由于DTS\eBaySDK\Types\RepeatableType
implements ArrayAccess
接口,您可以按如下方式访问私有$data
数组的项目:
foreach ($ItemSpecific as $item) {
var_dump($item);
}
或按索引:$ItemSpecific[0]
。但是您更有可能需要以一种或另一种方式迭代对象。
我曾经 运行 遇到过同样的问题。问题是您要解析的信息似乎是对象的私有 属性。对象的私有属性仅限于该对象。让私有 属性 调用对象中的 public 函数以输出值的标准做法。很可能不存在这样的功能,因此您无法解析信息。
但是,这些规则仅适用于 PHP 的领域。如果您将此信息更改为静态值,这些规则将不再适用。
<?php
function parse($obj, $start="[", $end = "]"){
$string = json_encode($obj);
$s = strpos($string, $start) + 1;
$e = strpos($string, $end);
$diff = $e - $s;
return substr($string, $s, $diff);
}
echo parse($ItemSpecific->Value);
现在我没有您的确切 API 结果的示例,因此您可能需要稍微更改参数,但这个总体思路应该可以解决您的问题。
我正在使用 eBay API returns:
DTS\eBaySDK\Types\RepeatableType Object
(
[data:DTS\eBaySDK\Types\RepeatableType:private] => Array
(
[0] => 60
)
[position:DTS\eBaySDK\Types\RepeatableType:private] => 0
[class:DTS\eBaySDK\Types\RepeatableType:private] => DTS\eBaySDK\Shopping\Types\NameValueListType
[property:DTS\eBaySDK\Types\RepeatableType:private] => Value
[expectedType:DTS\eBaySDK\Types\RepeatableType:private] => string
)
... 如果我尝试像这样访问它:
echo $ItemSpecific->Value->{0};
...我收到此错误:
Notice: Undefined property: DTS\eBaySDK\Types\RepeatableType::[=12=] in ...
由于DTS\eBaySDK\Types\RepeatableType
implements ArrayAccess
接口,您可以按如下方式访问私有$data
数组的项目:
foreach ($ItemSpecific as $item) {
var_dump($item);
}
或按索引:$ItemSpecific[0]
。但是您更有可能需要以一种或另一种方式迭代对象。
我曾经 运行 遇到过同样的问题。问题是您要解析的信息似乎是对象的私有 属性。对象的私有属性仅限于该对象。让私有 属性 调用对象中的 public 函数以输出值的标准做法。很可能不存在这样的功能,因此您无法解析信息。
但是,这些规则仅适用于 PHP 的领域。如果您将此信息更改为静态值,这些规则将不再适用。
<?php
function parse($obj, $start="[", $end = "]"){
$string = json_encode($obj);
$s = strpos($string, $start) + 1;
$e = strpos($string, $end);
$diff = $e - $s;
return substr($string, $s, $diff);
}
echo parse($ItemSpecific->Value);
现在我没有您的确切 API 结果的示例,因此您可能需要稍微更改参数,但这个总体思路应该可以解决您的问题。