Я быстро набрал для вас Демо .
В идеале вы найдете способ установить ключ к семантическому имени вместо '67'
.Но если вы не можете, и всегда по-другому, то лучше всего проверить ожидаемое значение .
Так как вы ожидаете сериализованный массив, мы можем проверить сериализованныйзначения, запустив их через функцию unserialize()
. Примечание: Это вызовет ошибки уровня E_NOTICE, поэтому вы, вероятно, захотите подавить ошибки с @unserialize()
(@
подавляет ошибки).Хотя обычно подавлять ошибки - плохая идея, это ошибки, которые мы ожидаем вызвать , поэтому их можно безопасно игнорировать.
Итак, когда мы пропускаем вещи через unserialize()
мы можем проверить, устанавливает ли оно $undid
в истинное значение.Как только это произойдет, мы должны убедиться, что у нас есть правильная сериализованная информация, чтобы мы могли видеть, установлено ли $undid[0]['video_id']
, и если это так, отображать это значение (или все, что вы хотите сделать сэто), а затем break
цикл foreach
, так как он больше не должен запускаться после выполнения наших условий.
Это не совсем красивое решение, но если вы не можете понять, какНазовите этот ключ семантически, например file_upload_array
. Лучше всего перебирать значения, пока не найдете нужное.Пока у вас нет немыслимого количества полей, это должно работать довольно быстро.
$entry = [
[
'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/xxxxxxx/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=QRSTUV22222";}}',
'36' => 'New Harpshire',
'34' => 'Borristown',
]
];
foreach( $entry[0] as $key => $val ){
if( $undid = @unserialize( $val ) ){ // unserialize returns E_NOTICE warnings on non-serialized items. @ suppresses that.
if( isset( $undid[0]['video_id'] ) ){ // Make sure this is the correct serialized field
echo $undid[0]['video_id'];
break;
}
}
}