调用getimagesize时触发数组转字符串通知,参数确认为字符串
问题根源分析
你遇到的这个数组转字符串通知,根本原因不是$page[0]['img_path']是数组——你的var_dump结果已经明确它是合法的字符串路径。真正的问题出在getimagesize()函数的返回值上:
getimagesize()不会返回单个尺寸数值,它返回的是一个包含图像宽度、高度、类型等信息的索引数组,典型结构如下:
array( 0 => 图像宽度(像素值), 1 => 图像高度(像素值), 2 => 图像类型标识(比如1代表GIF,2代表JPG), 3 => 格式化的宽高属性字符串(如'width="800" height="600"'), // 还有mime类型等可选元素 )
你直接把这个数组拼到HTML的style属性里(style='height:'" . getimagesize(...) . ";'),PHP会尝试把数组强制转换成字符串,这就触发了那个通知。
解决方案
你需要从getimagesize()返回的数组中提取你需要的具体值(比如高度对应数组下标1),同时建议增加错误判断,避免路径无效时出现新问题:
修改后的代码示例
// 先获取图像尺寸,同时做错误处理 $imgSize = getimagesize($page[0]['img_path']); if ($imgSize !== false) { $imgHeight = $imgSize[1]; // 提取图像高度值 echo "<div class='pageimg' style='height:{$imgHeight}px;'> <div class='pageinline'></div> <img src='" . $page[0]['img_path'] . "' alt='" . $page[0]['alt_text'] . "' style='max-width:100%'/> </div>"; } else { // 图像路径无效时的降级处理(比如不设置固定高度) echo "<div class='pageimg'> <div class='pageinline'></div> <img src='" . $page[0]['img_path'] . "' alt='" . $page[0]['alt_text'] . "' style='max-width:100%'/> </div>"; }
额外说明
- 如果需要设置宽度,就提取数组下标
0对应的值; - 你也可以直接用
$imgSize[3]获取格式化的宽高属性字符串,不过单独提取数值来控制样式会更灵活; - 增加
$imgSize !== false的判断,是为了防止图像路径无效时getimagesize()返回false,导致后续代码出现新错误。
内容的提问来源于stack exchange,提问作者killer
相关产品推荐
相关产品推荐

