0

我正在尝试从 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

4 回答 4

1

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

foreach($ret['embeds'] as $embed) {
    echo $embed['link'];
}
于 2013-08-17T00:22:44.197 回答
1

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

foreach ($ret['embeds'] as $rets) {
    echo $rets['link'];
}
于 2013-08-17T00:22:52.117 回答
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'];
}

或者,如果您想变得俏皮

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

编辑

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

$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'];
}
于 2013-08-17T00:24:37.257 回答
0

PHP >= 5.5.0

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

只是为了演示 PHP 的最新特性之一

于 2013-08-17T00:30:33.637 回答