gpt4 book ai didi

php - 如何更正此非法字符串偏移?

转载 作者:IT王子 更新时间:2023-10-28 23:45:30 26 4
gpt4 key购买 nike

我收到此错误“警告:第 32 行/home/mysite/public_html/wp-content/themes/evento/lib/php/extra.class.php 中的非法字符串偏移 'type'”

我意识到文件中的这部分代码是错误的,但是我在 PHP 方面还不是很好,我想知道是否有人可以帮助我重新编写这部分以消除错误。谢谢! (错误从第 32 行开始,这是下面 if 语句的开头)

代码如下:

/* new version */
function get_attachment_struct( $inputs ){
$attach = array();

if( $inputs['type'] == 'attach' ){
$name = $inputs['name'];
$attach = array(
0 => array(
'name' => $name,
'type' => 'text',
'label' => 'Attachment URL',
'lvisible' => false,
'upload' => true,
),
1 => array(
'name' => $name .'_id',
'type' => 'hidden',
'upload' => true
),
);

if( isset( $inputs[ 'classes' ] ) ){
$attach[0]['classes'] = $inputs[ 'classes' ];
$attach[1]['classes'] = $inputs[ 'classes' ] . '_id';
}
}
return $attach;
}

/* new version */

最佳答案

if ($inputs['type'] == 'attach') {

代码有效,但它要求函数参数 $inputs 是一个数组。使用 $inputs['type'] 时的“非法字符串偏移”警告意味着该函数被传递的是字符串而不是数组。 (然后由于字符串偏移量是一个数字,所以 'type' 不合适。)

所以理论上问题出在其他地方,代码的调用者没有提供正确的参数。

但是,此警告消息是 PHP 5.4 的新内容。如果发生这种情况,旧版本没有警告。他们会默默地将 'type' 转换为 0,然后尝试获取字符串的字符 0(第一个字符)。所以如果这段代码应该可以工作,那是因为滥用这样的字符串不会引起对 PHP 5.3 及以下版本的任何投诉。 (很多老的PHP代码在升级后都出现过这个问题。)

您可能希望通过检查调用代码来调试为什么该函数被赋予一个字符串,并通过执行 var_dump($inputs); 找出它具有什么值;在函数中。但是,如果您只想关闭警告以使其表现得像 PHP 5.3,请将行更改为:

if (is_array($inputs) && $inputs['type'] == 'attach') {

关于php - 如何更正此非法字符串偏移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15361392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com