从非静态的多维数组获取页面 ID
Getting page id from a multidimensional array which isn't static
我试图从 $arr 获取 ID 键的值,但没有指定它来自哪个嵌套数组。所以从 $arr.
中的所有嵌套数组返回 ID
$arr =array(
array(
'title' => 'home',
'ID' => '45'
),
array(
'title' => 'articleholder',
'ID' => '25'
),
array(
'title' => 'article page',
'ID' => '23'
)
$arr = SiteTree::get()->filter('ParentID', $page['ID'])->toNestedArray();
$id = 'ID'
var_dump($arr[$id]); //returns ['45, 25, 23']
如果像这样的东西可以定义为一个函数:
var_dump($arr[array_reverse_search_allnested($id)]
对于任何错误,我们深表歉意,这是一个小项目,也是我对 php 的介绍。
从筛选后的站点树返回的实际数组:
array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(1) {
[
0
]=> array(16) {
[
"ClassName"
]=> string(4) "Page" [
"LastEdited"
]=> string(19) "2019-01-08 03:58:54" [
"Created"
]=> string(19) "2019-01-08 03:58:43" [
"CanViewType"
]=> string(7) "Inherit" [
"CanEditType"
]=> string(7) "Inherit" [
"Version"
]=> string(1) "3" [
"URLSegment"
]=> string(7) "level-2" [
"Title"
]=> string(7) "Level 2" [
"ShowInMenus"
]=> string(1) "1" [
"ShowInSearch"
]=> string(1) "1" [
"Sort"
]=> string(1) "1" [
"HasBrokenFile"
]=> string(1) "0" [
"HasBrokenLink"
]=> string(1) "0" [
"ParentID"
]=> string(2) "23" [
"ID"
]=> int(24) [
"RecordClassName"
]=> string(4) "Page"
}
}
我认为您正在寻找 array_column,它从多维数组中提取一列。
$id = array_column($arr, "ID");
var_dump($id);
Returns:
array(3) {
[0]=>
string(2) "45"
[1]=>
string(2) "25"
[2]=>
string(2) "23"
}
或者您可以使用第三个参数作为 ID 并获得以下输出:
$id = array_column($arr, "title","ID");
var_dump($id);
/*array(3) {
[45]=>
string(4) "home"
[25]=>
string(13) "articleholder"
[23]=>
string(12) "article page"
}*/
我试图从 $arr 获取 ID 键的值,但没有指定它来自哪个嵌套数组。所以从 $arr.
中的所有嵌套数组返回 ID$arr =array(
array(
'title' => 'home',
'ID' => '45'
),
array(
'title' => 'articleholder',
'ID' => '25'
),
array(
'title' => 'article page',
'ID' => '23'
)
$arr = SiteTree::get()->filter('ParentID', $page['ID'])->toNestedArray();
$id = 'ID'
var_dump($arr[$id]); //returns ['45, 25, 23']
如果像这样的东西可以定义为一个函数:
var_dump($arr[array_reverse_search_allnested($id)]
对于任何错误,我们深表歉意,这是一个小项目,也是我对 php 的介绍。
从筛选后的站点树返回的实际数组:
array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(0) {} array(1) {
[
0
]=> array(16) {
[
"ClassName"
]=> string(4) "Page" [
"LastEdited"
]=> string(19) "2019-01-08 03:58:54" [
"Created"
]=> string(19) "2019-01-08 03:58:43" [
"CanViewType"
]=> string(7) "Inherit" [
"CanEditType"
]=> string(7) "Inherit" [
"Version"
]=> string(1) "3" [
"URLSegment"
]=> string(7) "level-2" [
"Title"
]=> string(7) "Level 2" [
"ShowInMenus"
]=> string(1) "1" [
"ShowInSearch"
]=> string(1) "1" [
"Sort"
]=> string(1) "1" [
"HasBrokenFile"
]=> string(1) "0" [
"HasBrokenLink"
]=> string(1) "0" [
"ParentID"
]=> string(2) "23" [
"ID"
]=> int(24) [
"RecordClassName"
]=> string(4) "Page"
}
}
我认为您正在寻找 array_column,它从多维数组中提取一列。
$id = array_column($arr, "ID");
var_dump($id);
Returns:
array(3) {
[0]=>
string(2) "45"
[1]=>
string(2) "25"
[2]=>
string(2) "23"
}
或者您可以使用第三个参数作为 ID 并获得以下输出:
$id = array_column($arr, "title","ID");
var_dump($id);
/*array(3) {
[45]=>
string(4) "home"
[25]=>
string(13) "articleholder"
[23]=>
string(12) "article page"
}*/