Получение идентификатора страницы из многомерного массива, который не является статичным - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь получить значение идентификатора ключа из $ arr, не указывая, из какого вложенного массива он принадлежит. поэтому возвращаем идентификатор из всех вложенных массивов в $ arr.

$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"
    }
}

1 Ответ

0 голосов
/ 16 января 2019

Я думаю, что вы ищете array_column, который извлекает один столбец из многомерного массива.

$id = array_column($arr, "ID");
var_dump($id);

Возвращает:

array(3) {
  [0]=>
  string(2) "45"
  [1]=>
  string(2) "25"
  [2]=>
  string(2) "23"
}

Или вы можете использовать третий аргумент в качестве идентификатора и получить следующий вывод:

$id = array_column($arr, "title","ID");
var_dump($id);

/*array(3) {
  [45]=>
  string(4) "home"
  [25]=>
  string(13) "articleholder"
  [23]=>
  string(12) "article page"
}*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...