这是我的阵法:
Array
(
[0] => Array
(
[id] => 1387
[form_id] => 2
[date_created] => 2018-05-17 21:34:37
----> [67] => a:1:{i:0;a:7:{s:17:"wp_attachement_id";i:5828;s:9:"mime_type";s:9:"video/mp4";s:9:"file_path";s:89:"/home/xxx/public_html/wp-content/uploads/2018/05/703c94b2b97a6479113d9e3020952891.mp4";s:5:"title";s:3:"xxx";s:11:"description";s:3:"xxx";s:8:"video_id";s:6:"QRSTUV";s:9:"video_url";s:43:"https://www.youtube.com/watch?v=QRSTUV";}}
[36] => New Harpshire
[34] => Borristown
)
)
以下将打印视频id:
$undid = unserialize($entry['0']['67']);
echo $undid['0']['video_id'];
问题是数字“67”并不保持不变。如果我不知道“67”是什么,我该如何检索视频id?
1条答案
按热度按时间tjvv9vkg1#
我给你做了个演示。
理想情况下,您会找到一种方法,将键设置为语义名称,而不是
'67'
. 但是如果你不能,而且总是不同的,那么你最好的办法就是检查期望值。因为您需要一个序列化数组,所以我们可以通过在
unserialize()
功能。注意:这将触发e\u通知级别的错误,因此您可能希望使用@unserialize()
(the)@
抑制错误)。虽然抑制错误通常是个坏主意,但这些错误是我们期望触发的,所以应该可以安全地忽略它们。所以,当我们通过
unserialize()
,我们可以检查它是否凝固$undid
真正的价值。一旦这样做了,我们需要确保我们有正确的序列化信息,这样我们就可以看到$undid[0]['video_id']
设置了,如果设置了,则回显该值(或您想对其执行的任何操作),然后break
这个foreach
循环,因为一旦我们的条件得到满足,它就不再需要运行了。这并不是最漂亮的解决方案,但除非你能想出如何命名关键字,比如
file_upload_array
,最好的办法是循环遍历这些值,直到找到所需的值。只要您没有无法想象的字段数量,这应该可以相当快地工作。