我收到Warning: Illegal string offset 'customitem_id' in admin/controller/sale/customer.php
和/admin/controller/sale/customer.php on line 941Notice: Uninitialized string offset: 0
我试图在列表中显示所有相关的自定义产品,我不确定这个错误意味着什么。这是代码,它可以工作,如果我没有foreach循环,但然后只显示一个产品。我还需要显示其他5个已分配的产品。
`//自定义项目分配给客户
if (isset($this->request->post['customitem_id'])) {
$data['customitem_id'] = $this->request->post['customitem_id'];
} elseif (!empty($customer_info)) {
$data['customitem_id'] = $customer_info['customitem_id'];
} else {
$data['customitem_id'] = 0;
}
$data['product_relateds'] = array();
if(isset($data['customitem_id'])) {
$related_infos = $this->model_sale_customer->getProduct($data['customitem_id']);
foreach($related_infos as $related_info) {
$data['product_relateds'][] = array(
'customitem_id' => $related_info['customitem_id'],
'name' => $related_info['name']
);
}
}
任何帮助将不胜感激。
tpl文件中的其他代码如下所示
$('input[name=\'related\']').autocomplete({
'source': function(request, response) {
$.ajax({
url: 'index.php?route=catalog/customitems/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request),
dataType: 'json',
success: function(json) {
response($.map(json, function(item) {
return {
label: item['name'],
value: item['customitem_id']
}
}));
}
});
},
'select': function(item) {
$('input[name=\'related\']').val('');
$('#product-related' + item['value']).remove();
$('#product-related').append('<div id="product-related' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="customitem_id[]" value="' + item['value'] + '" /></div>')`
和
<div class="form-group">
<label class="col-sm-2 control-label" for="input-related"><span data-toggle="tooltip" title="<?php echo $help_related; ?>"><?php echo $entry_addcustomitem; ?></span></label>
<div class="col-sm-10">
<input type="text" name="related" value="" placeholder="<?php echo $entry_addcustomitem; ?>" id="input-related" class="form-control" />
<div id="product-related" class="well well-sm" style="height: 150px; overflow: auto;">
<?php foreach ($product_relateds as $product_related) { ?>
<div id="product-related<?php echo $product_related['customitem_id']; ?>"><i class="fa fa-minus-circle"></i> <?php echo $product_related['name']; ?>
<input type="hidden" name="customitem_id[]" value="<?php echo $product_related['customitem_id']; ?>" />
</div>
<?php } ?>
</div>
</div>
</div>
答案 0 :(得分:1)
当有问题的变量是字符串而不是数组时,抛出错误。在这种情况下$related_info
。 var_dump
的{{1}}可以提供帮助。
答案 1 :(得分:0)
您的第一个错误&#34;非法字符串偏移&#39; customitem_id&#39;在admin / controller / sale / customer.php&#34;很可能你的变量不是一个数组,而是一个字符串。
您的第二个错误&#34;注意:未初始化的字符串偏移量:0&#34;表示变量是一个数组,但索引0是相同的,因为变量是一个字符串,但它是空的
下面的简单测试评论并取消注释每个错误:
$ dummyVar =&#34;你好&#34 ;;
//错误=&gt;未初始化的字符串偏移量:5 // echo $ dummyVar [5];
//错误=&gt;非法字符串偏移&#39;键名&#39; // echo $ dummyVar [&#39; key-name&#39;];
//错误=&gt;未定义的索引:键名 $ dummyVar2 = array(); $ dummyVar2 [0] =&#39;某事&#39 ;; // echo $ dummyVar2 [&#39; key-name&#39;];
//错误=&gt;未初始化的字符串偏移量:0 $ emptyString =&#39;&#39 ;; echo $ emptyString [0];