【问题标题】:Undefined offset: 70 in C:\xampp\htdocs\Dec\function.php on line 10未定义的偏移量:第 10 行 C:\xampp\htdocs\Dec\function.php 中的 70
【发布时间】:2017-11-08 16:09:41
【问题描述】:

结果不是完全从 NewsApi 获取的。我是 PHP 新手。 请帮我从 NewsApi 获取所有列表。 这是我的代码`

<?php
$urlsources=file_get_contents("https://newsapi.org/v1/sources");
$urlsourcearray = json_decode($urlsources,true);
$sources=$urlsourcearray['sources'];

for($i=0;$i<=count($sources);$i++){
  $sites = $urlsourcearray['sources'][$i];
  echo $sites['url'];
}

?>

【问题讨论】:

  • 使用 &lt;= 将超出数组索引的可能范围 ([0 - (len - 1)])。首先,您应该使用$i &lt; count($sources)。
  • 您应该在 for 循环之外将 count($sources) 声明为变量。然后在循环$i &lt; $countOfSources 中使用该变量。如果您像现在一样在循环内使用count(),那么您将在每次迭代时调用count(),这是低效的。

标签: php json regex


【解决方案1】:

尝试使用&lt; 而不是&lt;=,因为您从索引0 开始,也不要在for 循环中使用数组length 计数。 在循环中使用数组长度的计数是一种不好的做法。

$urlsources=file_get_contents("https://newsapi.org/v1/sources");
$urlsourcearray = json_decode($urlsources,true);
$sources=$urlsourcearray['sources'];
$count = count($sources); //check out this line
for($i=0;$i<$count; $i++){
  $sites = $urlsourcearray['sources'][$i];
  echo $sites['url'];
}

【讨论】:

  • 不错!有这个,用于在循环之外声明$count :)
  • @INTRATUBE 抱歉,我没听懂。哪个按钮?你想在任何锚/按钮链接 src 中使用这个 $site['url'] 值吗?
  • @BeingSunny,我想要按钮 src 链接?
  • 看看stackoverflow.com/questions/2906582/…这对你有帮助
  • 是的,知道了。@BeingSunny
【解决方案2】:

你的 for 循环是 &lt;=,而它应该只是 &lt;。

for($i=0;$i < count($sources);$i++){
 $sites = $urlsourcearray['sources'][$i];
 echo $sites['url'];
}

数组是零索引的。因此,如果您的数组有 4 个项目,则索引将是 0、1、2 和 3。

【讨论】:

  • 您应该在 for 循环之外将 count($sources) 声明为变量。然后在循环$i &lt; $countOfSources 中使用该变量。如果您像现在一样在循环内使用count(),您将在每次迭代中调用count(),这是低效的。考虑一下,如果数组中有 100 个项目,那么到它完成时,您实际上将调用 count() 函数 100 次,而不是单独声明一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多