1

我正在从 JSON 文件中调用数据。我的元素之一是:

"mainImg_select":""

有时这有一个值,有时它不会 - 在这种情况下它是空的。我将这个(以及其他)变量放在一个名为 Product 的对象中。

尝试设置$product -> mainImg时,我试图查看 JSON 值是否为空。如果它是空的,我想获取另一组图像的第一个值,$more_imgs并将其作为主图像。这是我的代码:

if(!is_null($mainImg)) {
    $product->mainImage = $html->find($mainImg, 0)->src;
    for ($idx = 0; $idx < 10; $idx++) {
        $more = $html->find($more_imgs, $idx);
        if (!is_null($more)) {
            $product->moreImages[$idx] = $more->src;
        } else {
            return;
        }
    }
} else {
    for ($idx = 0; $idx < 10; $idx++) {
        $more = $html->find($more_imgs, $idx);
        if (($idx == 0) && (!is_null($more))) {
            $product->mainImage = $more->src;
        } elseif (!is_null($more)) {
            $product->moreImages[$idx] = $more->src;
        } else {
            return;
        }
    }
}

当我运行代码时,我Notice: Trying to get property of non-object$product->mainImage = $html->find($mainImg, 0)->src;

我认为这与if(!is_null($mainImg))上面的内容有关,因为 $mainImg 应该为 JSON 中定义的 null。如果没有,这里最好使用什么?

编辑:这是设置 Product 对象时的一些更详细的代码:http: //pastebin.com/EEUgpwgn

4

2 回答 2

1

是否$mainImg在您的 HTML 中找不到;代码$html->find($mainImg, 0)将返回null,然后您将尝试访问对象的src参数null

(来自php simple HTML Parser Library 的文档

// Find (N)th anchor, returns element object or null if not found (zero based)
$ret = $html->find('a', 0);

)

你必须这样做:

if (null !== ($img = $html->find($mainImg, 0))) {
   $imgSrc = $img->src; // Here the HTML Element exists and you can access to the src parameter
}
于 2013-05-16T08:43:13.650 回答
1

即使“mainImg_select”等于空字符串“”,您也应该更改!is_null!emptyas will return false。is_null()

于 2013-05-16T08:45:22.923 回答