用变量回显php中的多维数组

时间:2013-08-17 00:17:30

标签: php arrays multidimensional-array

我试图从php中的多维数组键获取数据。 数组结构如下:

Array


( [status] => 1     [embeds] => Array
    (
        [1] => Array
            (
                [embed] => <IFRAME SRC="XXXXXXXX.ZZZ" FRAMEBORDER="0" MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="NO" WIDTH="620" HEIGHT="360"></IFRAME>
                [link] => http://XXXXXXXXXXX.ZZZZ
                [language] => ENG
            )

        [2] => Array
            (
                [embed] => <iframe src="http://www.XXXXXXX.ZZZZ" width="620" height="360" frameborder="0" scrolling="no"></iframe>
                [link] => http://www.XXXXXXX.ZZZZZ
                [language] => ENG
            ) ... ... ... ...


    ))

$ auto_incrementing_value从1开始到尽可能多。所以,如果我只想回显1个数据并且$ auto_incrementing_value = 1,我可以做echo $ret['embeds'][$auto_incrementing_value]['link']; 我想要做的是回显所有数组中的所有“链接”值。

我尝试了这段代码,但它不起作用:

$codes = 1;
foreach ($ret as $key => $rets){
echo $ret['embeds'][$codes]['link'];
$codes++;
}

4 个答案:

答案 0 :(得分:1)

您可以简单地遍历embeds数组:

foreach($ret['embeds'] as $embed) {
    echo $embed['link'];
}

答案 1 :(得分:1)

如果您使用的是foreach,则无需使用索引变量,这就是foreach自动执行的操作。您只需要为其提供要迭代的正确数组。

foreach ($ret['embeds'] as $rets) {
    echo $rets['link'];
}

答案 2 :(得分:1)

这肯定是你在那里发生的一些令人讨厌的语法。您正在使用foreach循环,就像while循环一样,写成for循环。

尝试:

foreach ($ret['embeds'] as $embed){
  echo $embed['link'];
}

或者:

for( $i=1; $i<=count($ret['embeds']); $i++ ) {
  echo $ret['embeds'][$i]['link'];
}

或者如果你想获得 saucy

$i=0;
while($i<=count($ret['embeds'])) {
  echo $ret['embeds'][$i]['link'];
  $i++;
}

修改

@MarkBaker提出了一个关于在循环条件中调用count() [或实际上任何函数]的有效点。如果函数的返回在整个循环过程中是静态的[即:数组中的元素数量没有改变]那么最好这样做:

$count = count($ret['embeds'];
for( $i=1; $i<=$count; $i++ ) {
  echo $ret['embeds'][$i]['link'];
}

或者,你可以倒退:

for( $i=count($ret['embeds'])-1; $i>=0; $i-- ) {
  echo $ret['embeds'][$i]['link'];
}

答案 3 :(得分:0)

PHP&gt; = 5.5.0

foreach(array_column($ret['embeds'], 'link') as $link) {
    echo $link, PHP_EOL;
}

只是为了演示PHP中的最新功能