我正在调用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
答案 0 :(得分:1)
是否在您的HTML上找不到$mainImg
;代码$html->find($mainImg, 0)
将返回null
,然后您将尝试访问src
对象的null
参数。
(来自Documentation of the 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
}
答案 1 :(得分:1)
您应该将!is_null
更改为!empty
,因为is_null()
即使“mainImg_select”等于空字符串“”也会返回false。