我试图从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++;
}
答案 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中的最新功能