[英]PHP 7 Fatal error: Uncaught Error: Cannot use string offset as an array
[英]Fatal error: Uncaught Error: Cannot use string offset as an array
自定義字段擴展被添加到博客插件導致此錯誤“致命錯誤:未捕獲錯誤:無法將字符串偏移用作數組”我正在使用 PHP7 我嘗試使用 array_key_exists() 但這並沒有解決它意外的錯誤禁用擴展
public function getCustomFields()
{
$cfData = getXML(BLOGCUSTOMFIELDS);
$cf = array('options' => '', 'main' => '');
$count_options = 0;
$count_main = 0;
$count_opt = 0;
foreach($cfData->item as $custom_field)
{
if($custom_field->area == 'options')
{
$cf['options'][$count_options]['key'] = (string) $custom_field->desc;
$cf['options'][$count_options]['label'] = (string) $custom_field->label;
$cf['options'][$count_options]['type'] = (string) $custom_field->type;
$cf['options'][$count_options]['value'] = (string) $custom_field->value;
if ($custom_field->type == "dropdown")
{
$count_opt = 0;
$cf['options'][$count_options]['options'] = array();
foreach ($custom_field->option as $option)
{
$cf['options'][$count_options]['options'][] = (string) $option;
$count_opt++;
}
}
$count_options++;
}
elseif($custom_field->area == 'main')
{
$cf['main'][$count_main]['key'] = (string) $custom_field->desc;
$cf['main'][$count_main]['label'] = (string) $custom_field->label;
$cf['main'][$count_main]['type'] = (string) $custom_field->type;
$cf['main'][$count_main]['value'] = (string) $custom_field->value;
if ($custom_field->type == "dropdown")
{
$count_opt = 0;
$cf['main'][$count_main]['options'] = array();
foreach ($custom_field->option as $option)
{
$cf['main'][$count_main]['options'][] = (string) $option;
$count_opt++;
}
}
$count_main++;
}
}
return $cf;
}
根據它所指的錯誤
$cf = array('options' => '', 'main' => '');
非常感謝您的幫助。
編輯:轉儲 XML 文件
object(SimpleXMLExtended)#483 (1) { ["item"]=> array(8) { [0]=> object(SimpleXMLExtended)#484 (4) { ["area"]=> string(7) "options " ["desc"]=> string(4) "slug" ["label"]=> string(8) "Slug/URL" ["type"]=> string(4) "text" } [1]= > object(SimpleXMLExtended)#485 (4) { ["area"]=> string(7) "options" ["desc"]=> string(4) "tags" ["label"]=> string(32) "標簽(用逗號分隔標簽)" ["type"]=> string(4) "text" } [2]=> object(SimpleXMLExtended)#486 (4) { ["area"]=> string(7) "options" ["desc"]=> string(4) "date" ["label"]=> string(25) "Publish date (any format)" ["type"]=> string(4) "text" } [3]=> object(SimpleXMLExtended)#487 (4) { ["area"]=> string(7) "options" ["desc"]=> string(8) "category" ["label"]= > string(30) "Assign this Post To A Category" ["type"]=> string(8) "dropdown" } [4]=> object(SimpleXMLExtended)#488 (4) { ["area"]=> string(7) "options" ["desc"]=> string(6) "author" ["label"]=> string(14) "Author's Name:" ["type"]=> string(4) "text " } [5]=> 對象(SimpleXMLExtended)#489 (4) { ["area"]=> string(7) "options" ["desc"]=> string(7) "private" ["label"]=> string(15) "Post is private" ["type"] => string(8) "checkbox" } [6]=> object(SimpleXMLExtended)#490 (4) { ["area"]=> string(4) "main" ["desc"]=> string(5) "title" ["label"]=> object(SimpleXMLExtended)#492 (0) { } ["type"]=> string(5) "title" } [7]=> object(SimpleXMLExtended)#491 (4) { ["area"]=> string(4) "main" ["desc"]=> string(7) "content" ["label"]=> object(SimpleXMLExtended)#493 (0) { } ["type "]=> string(8) "textarea" } } }
改變$cf = array('options' => '', 'main' => '');
到$cf = array('options' => array(), 'main' => array());
錯誤說
致命錯誤:未捕獲錯誤:無法使用字符串偏移量作為數組
您的代碼是錯誤的,因為您正在嘗試將新鍵添加到 $cf['options'] 中,但它是字符串而不是數組
$cf['options'][$count_options] .....
從 PHP 7.1+ 版本開始,不再可能用 7.1.0 來初始化數組,在字符串上應用空索引運算符會引發致命錯誤。 以前,字符串被默默地轉換為數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.