echo php中的一个带有变量的多维数组


echo a multidimensional array in php with variables

我正试图从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++;
}

这肯定是一些古怪的语法。您使用的是像while循环一样的foreach循环,它的编写方式类似于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++;
}

编辑

@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'];
}

您可以简单地迭代embeds数组:

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

如果使用foreach,则不需要使用索引变量,foreach会自动执行此操作。你只需要给它一个你想要迭代的正确数组。

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

PHP>=5.5.0

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

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