我通常使用我的在线网络服务器进行网页开发,但由于某些原因,我需要在我的XAMPP本地测试它。
下面的代码将通过curl从网站上获取图片,并显示获取的总图片数。
让我感到困惑的是,我在XAMPP上收到了这个错误:
Notice: Undefined offset: 15 in C:\Web\xampp\htdocs\curl\fetch.php on line 69
行代码69:低于if($images_array[$i]) {
<?php
$image_regex = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui';
preg_match_all($image_regex, $html, $img, PREG_PATTERN_ORDER);
$images_array = $img[1];
?>
<div class="images">
<?php
$k=1;
for ($i=0;$i<=sizeof($images_array);$i++) {
if($images_array[$i]) {
if(strstr($images_array[$i],'http')) {
echo "<img src='".$images_array[$i]."' width='100' id='".$k."' >";
$k++;
}
}
}
?>
<input type="hidden" name="total_images" id="total_images" value="<?php echo --$k?>" />
</div>
我在我的在线网络服务器中使用此代码没有任何问题。我将我的所有文件从我的网络服务器导入到XAMPP,没有对其进行任何更改。另外,通过选中phpinfo()
我希望有人能指出这个undefined offset
错误。
答案 0 :(得分:1)
请勿使用<= sizeof($array)
:
for ($i = 0; $i < sizeof($images_array); $i++) {
sizeof()/count()
返回条目数。由于数组索引从0开始,因此您必须使用$i <= count($arr) - 1
或使用$i < count($arr)
。
可能在生产环境中关闭了错误报告,因此您没有看到通知。
答案 1 :(得分:0)
而不是
if($images_array[$i]) {
使用它:
if(isset($images_array[$i])) {
并且也使用这个:
$i< sizeof($images_array)
或$i < count($images_array)
而不是$i<=sizeof($images_array)
答案 2 :(得分:0)
从<=
for ($i=0;$i<=sizeof($images_array);$i++)
由于$i
从0开始
答案 3 :(得分:0)
将<=
中的for
更改为<
因为sizeof($images_array)
例如是5,$images_array[5]
将不存在。
仅0 ... 4(总共5个)。
通过将您的for <=
更改为<
,您将无法访问$images_array[5]
,从而阻止通知显示。