尝试访问空类型值的数组偏移 Prestashop 1.7.8.8 PHP 7.4

问题描述 投票:0回答:1

我的 prestashop 后台有这个错误 ERROR

这是代码:

<?php ob_start();
echo $_smarty_tpl->tpl_vars['tag']->value['id_carrier'];
$_prefixVariable6 = ob_get_clean();
if($_smarty_tpl->tpl_vars['carriersAssociation']->value[$_smarty_tpl->tpl_vars['tagCarrierMip']->value['id']] == $_prefixVariable6) {
    ?>selected<?php 
    }?>> <?php echo $_smarty_tpl->tpl_vars['tag']->value['name'];?>
</option>

错误在“if”行中,我认为某些进程由于此错误而无法正常工作。

关于如何避免此错误的任何说法?

根据我看到的一些帖子尝试输入“isset”但完全没有变化

谢谢!

php arrays prestashop-1.7
1个回答
0
投票

您正试图访问一个不存在或为空的数组元素。在您的代码中,问题可能是

$_smarty_tpl->tpl_vars['carriersAssociation']->value
的值为 null 或键
$_smarty_tpl->tpl_vars['tagCarrierMip']->value['id']
在数组中不存在。

为避免此错误,您可以在访问数组元素之前先使用isset函数检查数组和键是否存在。

这是包含 isset 检查的代码的更新版本:

<?php ob_start();
echo $_smarty_tpl->tpl_vars['tag']->value['id_carrier'];
$_prefixVariable6 = ob_get_clean();
if(isset($_smarty_tpl->tpl_vars['carriersAssociation']->value[$_smarty_tpl->tpl_vars['tagCarrierMip']->value['id']]) && $_smarty_tpl->tpl_vars['carriersAssociation']->value[$_smarty_tpl->tpl_vars['tagCarrierMip']->value['id']] == $_prefixVariable6) {
    ?>selected<?php 
    }?>> <?php echo $_smarty_tpl->tpl_vars['tag']->value['name'];?>
</option>

此代码首先检查键

$_smarty_tpl->tpl_vars['tagCarrierMip']->value['id']
是否存在于数组
$_smarty_tpl->tpl_vars['carriersAssociation']->value
中,如果存在,则将其值与
$_prefixVariable6.
进行比较,如果比较为真,则将
selected
属性添加到
option
标签。

希望对您有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.