php - 预期类型“可迭代|对象”。找到“字符串”但不明白为什么
问题描述
我正在尝试从 php 中的图像中读取所有 exif 数据,将其转换为更易于访问的形式并将其存储在 MariaDB 中的图像条目中。数据库中已经有现有图像的记录,但没有 exif 数据,所以我使用非常相似的代码编写了一个一次性过程。那工作得很好。
我现在尝试实现的具体逻辑是在上传新图像时提取 exif。
现在我遇到了一个我不明白原因的语法错误:预期类型'iterable|object'。找到“字符串”
当然foreach
需要一个可迭代的,但是为什么在这里它会$headers[$section]
被视为一个字符串呢?
整天都在尝试解决这个问题,将它与有效的代码和来自https://www.php.net/manual/en/function.exif-read-data.php的示例数据进行比较,但仍然卡住了。谢谢你的帮助。
<?php
$file = '../uploads/60db4bd52107d5.12775787_1624984533.jpg';
$fp = fopen($file, 'rb');
if (!$fp) {
$error = 'Error: Unable to open image for reading';
exit;
}
// Attempt to read the exif headers
$headers = exif_read_data($fp, 0, true);
print_r ($headers); // <<<<<< shows exif OK
if ($headers = "") {
echo 'No exif headers';
exit;
}
$sections = [ "COMPUTED", "FILE", "IFD0", "THUMBNAIL", "EXIF", "INTEROP" ]; // for exif extraction
$exifAll = "{";
foreach ($sections as $section) {
$exifAll .= '"' . $section . '":{';
foreach ($headers[$section] as $header => $value) {
// >>>>>>>? ~~~~~~~~~~~~~~~~~~ <<<<<<< Expected type 'iterable|object'. Found 'string'
$exifAll .= '"' . $header . '":"' . $value . '",';
}
$exifAll .= '},';
}
解决方案
推荐阅读
- javascript - 定制材料微调器不可见
- reactjs - Emotion CSS prop 样式在预取 Next.js 页面时中断
- azure-ad-b2c - 在 Azure Active Directory B2C 中自定义用户界面
- python - python chatbot,将聊天机器人集成到网站
- angular - Ionic 5 - 离子内容没有可见溢出(无法滚动)
- python - 是否可以从函数应用程序中的 Azure API 网关调用中检索标头?
- python - Pandas 按组将列转换为百分比
- wordpress - 尝试在 Google 云平台上编辑 wp-config 文件但收到此消息
- r - 在 ggplot2 中绘制非线性模型输出的输出
- autodesk-forge - 如何在 Autodesk Forge 查看器上通过拖放添加对象