PHP 7.4尝试访问数组偏移量

问题描述

我正在使用此代码,但是现在我的调试日志中出现一条错误消息:

尝试访问类型为bool的值的数组偏移量

$image = wp_get_attachment_image_src( get_post_thumbnail_id(),'thumbnail' );
$my_image = ( $image[0] != '' ) ? '' . $image[0] . '' : '""';

我相信问题与我现在使用的PHP 7.4有关吗?

解决方法

wp_get_attachment_image_src返回的是布尔值(在您的情况下为false)而不是数组,因为您的图像可能不存在。

在尝试访问阵列之前,请确保检查$my_image

$image = wp_get_attachment_image_src( get_post_thumbnail_id(),'thumbnail' );
if (image) {
     $my_image = ( $image[0] != '' ) ? '' . $image[0] . '' : '""';
}

文档指出:

返回

(array | false)图像数据的数组;如果没有图像,则为布尔值false 可用。

  • (字符串)图像源URL。
  • '1'

(int)图像宽度(以像素为单位)。

  • '2'

(int)图像高度(以像素为单位)。

  • '3'

(布尔)图像是否为调整大小的图像。

来源:https://developer.wordpress.org/reference/functions/wp_get_attachment_image_src/

,

如WordPress documentation wp_get_attachment_image_src所述,如果没有可用图像,则可能返回false。如错误所述,您试图始终以数组形式访问返回值,但是它可能是boolfalse)。 试试这个:

$image = wp_get_attachment_image_src( get_post_thumbnail_id(),'thumbnail' );
$my_image = $image !== false ? '' . $image[0] . '' : '""';