按键访问数组时如何避免注意未定义的索引

时间:2018-04-26 09:36:01

标签: php

<?php

    $hostname='localhost';
    $username='root';
    $password='';
    $database='jsondb';

    $conn=mysqli_connect($hostname,$username,$password,$database) or die ('Connecting to Mysql failed');

     $jsonCont = file_get_contents('https://graph.facebook.com/186622721684184?fields=posts{id,full_picture,created_time,from,message}&access_token=');

     $content = json_decode($jsonCont, true);
     for($x = 0; $x <= 24; $x++){

     $id = $content['posts']['data'][$x]['id'];
     $message = $content['posts']['data'][$x]['message'];
     $name = $content['posts']['data'][$x]['from']['name'];
     $full_picture = $content['posts']['data'][$x]['full_picture'];
     $created_time = $content['posts']['data'][$x]['created_time'];

    mysqli_query($conn,"insert into fbjsontable value('$id', '$message', '$name', '$full_picture', '$created_time')");
    }

?>

这是我的完整代码。即时通讯使用fb图数据。当我将json数据从图形发布到数据库时,注意:未定义的索引:第21行的C:\ xampp \ htdocs \ event&amp; happening \ jsonCon.php中的full_picture将出现此消息,因为full_pictures不存在。如何忽略不存在的列?

2 个答案:

答案 0 :(得分:1)

如果您使用php7.0 +,您可以避免三元运算符通知,如下所示:

$full_picture = $content['posts']['data'][$x]['full_picture'] ?? null;

$ full_picture现在将包含已发送的数据,或者在未收到数据时为null。

答案 1 :(得分:0)

首先确保您的db字段可以接受null或空值。之后你就可以这样:

isset($content['posts']['data'][$x]['full_picture'])?$fullpicture=$content['posts']['data'][$x]['full_picture']:$fullpicture='';

这行代码检查图像是否存在,如果图像存在,它会将它的值分配给变量$fullpicture,否则会将变量留空。

错误来自于$fullpicture变量未分配任何值的事实。正如我所说,但请确保您的db-field接受空字段。如果没有,你就无法控制你的桌子,那么就去做:

isset($content['posts']['data'][$x]['full_picture'])?$fullpicture=$content['posts']['data'][$x]['full_picture']:$fullpicture='Image not found';