我正试图从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 中的一个最新功能