这是我的函数:
function get_cat_option($data, $pid, $cid=0, $parent=0){
static $i = 1;
$tab = str_repeat(" ",$i);
static $a = 0;
$pusher = "-";
$showPusher = str_repeat($pusher,$a);
if(isset($data[$parent]) && $data[$parent])
{
$html = "$tab";
$i++;
foreach($data[$parent] as $v)
{
$a++;
$child = get_cat_option($data, $pid, $cid, $v->category_id);
if($v->category_parent_id == 0)
{
$listChild = "";
}
if($v->category_id == $pid)
{
$selected = ' selected';
}
else
{
$selected = '';
}
if($v->category_id == $cid)
{
$disabled = ' disabled';
}
else
{
$disabled = '';
}
$html .= "$tab";
$html .= '<option value="'.$v->category_id.'"'.$selected.$disabled.'>'.$showPusher.' '.$v->category_title.'</option>';
$a--;
if($child)
{
$i--;
$html .= $child;
$html .= "$tab";
}
}
$html .= "$tab";
return $html;
}
else
{
return false;
}
}
我这样称呼它:
<dt><select name="category" size="1" class="field form" style="width: 325px">
<option value="">--</option>
<?=get_cat_option($parent_data,$data['product_category'])?>
</select></dt>
错误是:
Trying to get property of non-object in
错误行为:
$child = get_cat_option($data, $pid, $cid, $v->category_id);
这段代码在 PHP 5.4 中运行良好,但现在我使用的是 PHP 7。
我该如何解决它?
该错误很可能是指$v->category_id
参数。如果category_id
在 $v
中不存在,则会抛出错误。
在循环遍历$data[$parent]
对象之前,请验证它是否正确:
var_dump($data[$parent]);
很可能$v中没有属性"category_id",因此它会引发警告。您可以使用以下命令检查其是否存在
if (isset($v->category_id)) {
// do something
}
或者我们使用 ?? 运算符来设置默认值。
$category_id = $v->category_id ?? $fallback;