如何映射数组中的值以用于for循环?

时间:2011-07-02 20:20:01

标签: php arrays loops

我怎样才能改变这个

Array
(
    [0] => feed
    [1] => entry
)

进入这个:

foreach ($data->feed->entry as $item) { // Yep, we made it }

第一个数组可以包含任意数量的值,因此解决方案需要灵活。

编辑: Dogbert给了我完美的答案,但为了将来更清楚。我所拥有的只是一个阵列。基于此我需要从对象获取数组。所以我的数组也可能是这样的:

[0] => world
[1] => countries
[2] => finland
[3] => helsinki
[4] => people

然后我需要得到:

foreach ($data->world->countries->finland->helsinki->people as $item) {}

2 个答案:

答案 0 :(得分:0)

function map_property($obj, $array) {
  $ret = $obj;
  foreach($array as $prop) {
    $ret = $ret->$prop;
  }
  return $ret;
}

foreach(map_property($data, array('feed', 'entry')) as $item) { }

答案 1 :(得分:0)

如果您需要key =>循环中的值是这样的:

foreach ($data->feed->entry as $key=>$item) {
// Yep, we made it
echo 'This is key:'.$key.' this is item: '.$item;
}

你会得到结果

这是关键:0这是项目:feed这是关键:1这是项目:条目