【发布时间】:2018-03-20 17:08:06
【问题描述】:
我已经搜索过,但找不到答案。
tl;dr 我有一个 wordpress 主题,不再得到创建者的支持,我正试图摆脱某些页面顶部弹出的警告文本。我不是程序员,所以我不确定该怎么做,但我确实理解代码足以从其他地方修补补丁。我需要帮助。
这是我得到的:
Warning: Illegal string offset 'group_no' in file1.php on line 196
Warning: Illegal string offset 'order_no' in file1.php on line 196
Warning: Illegal string offset 'group_no' in file1.php on line 200
file1.php的相关代码如下:
function get_location( $location, $post_id )
{
// loaded by PHP already?
if( !empty($location) )
{
return $location;
}
// vars
$groups = array();
$group_no = 0;
// get all rules
$rules = get_post_meta($post_id, 'rule', false);
if( is_array($rules) )
{
foreach( $rules as $rule )
{
// if field group was duplicated, it may now be a serialized string!
$rule = maybe_unserialize($rule);
// does this rule have a group?
// + groups were added in 4.0.4
if( !isset($rule['group_no']) )
{
$rule['group_no'] = $group_no;
// sperate groups?
if( get_post_meta($post_id, 'allorany', true) == 'any' )
{
$group_no++;
}
}
// add to group
$groups[ $rule['group_no'] ][ $rule['order_no'] ] = $rule; // this is line 196
// sort rules
ksort( $groups[ $rule['group_no'] ] );
}
// sort groups
ksort( $groups ); //this is line 200
}
// return fields
return $groups;
}
我知道这是某种数组分配错误,但我对 php 不够熟悉,无法理解错误是什么以及如何修复它。在保留功能的同时如何重建此代码以使错误消失?
【问题讨论】:
-
您的警告表明
$rule是一个字符串,但您正尝试将其作为数组访问 -
太好了——我该如何解决?
-
可能在这里
maybe_unserialize
标签: php arrays string warnings offset