我有一个这样的对象:
stdClass Object
(
[_count] => 10
[_start] => 0
[_total] => 37
[values] => Array
(
[0] => stdClass Object
(
[_key] => 50180
[group] => stdClass Object
(
[id] => 50180
[name] => CriticalChain
)
)
[1] => stdClass Object
(
[_key] => 2357895
[group] => stdClass Object
(
[id] => 2357895
[name] => Data Modeling
)
)
[2] => stdClass Object
(
[_key] => 1992105
[group] => stdClass Object
(
[id] => 1992105
[name] => SQL Server Users in Israel
)
)
[3] => stdClass Object
(
[_key] => 37988
[group] => stdClass Object
(
[id] => 37988
[name] => CDO/CIO/CTO Leadership Council
)
)
[4] => stdClass Object
(
[_key] => 4024801
[group] => stdClass Object
(
[id] => 4024801
[name] => BiT-HR, BI & IT Placement Agency
)
)
[5] => stdClass Object
(
[_key] => 37845
[group] => stdClass Object
(
[id] => 37845
[name] => Israel Technology Group
)
)
[6] => stdClass Object
(
[_key] => 51464
[group] => stdClass Object
(
[id] => 51464
[name] => Israel DBA's
)
)
[7] => stdClass Object
(
[_key] => 66097
[group] => stdClass Object
(
[id] => 66097
[name] => SQLDBA
)
)
[8] => stdClass Object
(
[_key] => 4462353
[group] => stdClass Object
(
[id] => 4462353
[name] => Israel High-Tech Group
)
)
[9] => stdClass Object
(
[_key] => 4203807
[group] => stdClass Object
(
[id] => 4203807
[name] => Microsoft Team Foundation Server
)
)
)
)
我需要在HTML表中获取id和name,但我似乎很难迭代这个对象。 TIA。我知道我需要到数组数组,然后到组对象,但我会跳过对象和数组之间的转换以及foreach与基于索引的迭代。
例如我试过这个:
foreach ($res as $values) { print "\n"; print_r ($values); }
它通过对象迭代,但它也让我无用
10 0 37
答案 0 :(得分:21)
echo "<table>"
foreach ($object->values as $arr) {
foreach ($arr as $obj) {
$id = $obj->group->id;
$name = $obj->group->name;
$html = "<tr>";
$html .= "<td>Name : $name</td>";
$html .= "<td>Id : $id</td>";
$html .= "</tr>";
}
}
echo "</table>";
答案 1 :(得分:4)
function objectToArray( $data )
{
if ( is_object( $data ) )
$d = get_object_vars( $data );
}
首先将Object转换为数组,如:
$results = objectToArray( $results );
并使用
foreach( $results as result ){... ...}
答案 2 :(得分:2)
foreach($res->values as $value) {
print_r($value);
}
答案 3 :(得分:1)
由于这是Google搜索结果中排名第一的iterate over stdclass
,因此回答标题中的问题可能会有所帮助:
您只需使用foreach即可遍历stdclass:
$user = new \stdClass();
$user->flag = 'red';
foreach ($user as $key => $value) {
// $key is `flag`
// $value is `red`
}
答案 4 :(得分:0)
我知道这是一篇旧文章,但出于其他原因: 使用stdClass时,应使用 Reflections :
$obj = new ReflectionObject($object);
$propeties = $obj->getProperties();
foreach($properties as $property) {
$name = $property->getName(); <-- this is the reflection class
$value = $object->$name; <--- $object is your original $object
here you need to handle the result (store in array etc)
}