我有一个这样的数组:
printr_($photos);
======
Array
(
[0] => Array
(
[path] => site:photos/photo-1.jpg
[data] => Array
(
[PhotoTitle] => Mega title
[PhotoDate] => 2015
[FlickrURL] => xxx
[Portrait] =>
[slug] => mega-title
)
)
[1] => Array
(
[path] => site:photos/photo-2.jpg
[data] => Array
(
[PhotoTitle] => Photo title
[PhotoDate] => 2001
[FlickrURL] => xxx
[Portrait] =>
[slug] => photo-title
)
)
...
我想从字符串中获取数组索引(这是我浏览器当前URL中的slug) 尝试了解决方案,但我收到了一个错误(第95行的未定义索引:数据[...])
/*
** Search in array
*/
function arraySearch($array, $field, $search){
foreach($array as $key => $value){
if ($value[$field] === $search)
return $key;
}
return false;
}
// Line 95
$photo_index = $photos[arraySearch($photos["data"], "slug", "mega-title")];
答案 0 :(得分:4)
这应该适用于PHP> = 5.5:
$key = array_search('mega-title', array_column(array_column($photos, 'data'), $slug));
$photo_index = $photos[$key];
答案 1 :(得分:0)
$photos
变量没有密钥'数据',至少不是打印输出。它有密钥1, 2, 3
等。因此$photos["data"]
根本不存在。
关于搜索,我不是100%确定你想要做什么,但我想你想得到$field
data
中的$search
等于{{ 1}},这样就是
/*
** Search in array
*/
function arraySearch($array, $field, $search){
foreach($array as $key => $value){
if ($value["data"][$field] === $search)
return $key;
}
return false;
}
你会用它
$photo_index = $photos[arraySearch($photos, "slug", "mega-title")];