You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Cloudinary API返回的PHP对象中获取指定视频元数据?

解决Cloudinary Api\Response对象的视频元数据取值问题

嘿,我看你在提取Cloudinary视频元数据时踩了个小坑——从你贴的print_r($result)输出能看出来,$result是一个Cloudinary\Api\Response对象,它继承自PHP的ArrayObject,不是普通的关联数组,所以你之前用数组索引或者直接访问私有属性名称的方式肯定会报「未定义索引」错误。

正确的取值方式

因为ArrayObject实现了ArrayAccess接口,你可以直接像操作普通数组一样访问它的内部数据,或者先转换成纯数组再操作:

方式1:直接以数组形式访问

// 获取视频宽度
echo $result['width']; 
// 获取视频的安全链接
echo $result['secure_url'];
// 获取第一个衍生资源的URL
echo $result['derived'][0]['url'];

方式2:先转换成纯数组再操作

如果你更习惯处理数组,可以先用getArrayCopy()方法把对象转换成数组:

$responseData = $result->getArrayCopy();
// 然后正常访问数组元素
echo $responseData['height']; // 输出456
echo $responseData['derived'][1]['bytes']; // 输出3293

为什么之前的方式无效?

  • echo $result[4]['width']:你把对象当成了数字索引的数组,但这个对象的内部数据是关联数组结构,没有数字索引,所以肯定找不到对应的元素。
  • echo $result['storage:ArrayObject:private']['width']:storage:ArrayObject:private是ArrayObject类的私有内部存储属性,外部代码无法直接访问私有属性,自然会报错。

这样就能顺利拿到你需要的视频元数据啦!

内容的提问来源于stack exchange,提问作者mark-in-motion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:58:45