Поскольку, казалось бы, вам не нужны никакие вторичные атрибуты, вы не должны ни начинать с перечислимого массива, ни использовать children
подмассивы.В вашем случае вы можете избежать использования записей в качестве имен ключей:
$hierarchy["A"] = array();
$hierarchy["A"]["A1"] = array();
$hierarchy["A"]["A2"] = array();
$hierarchy["B"] = array();
$hierarchy["B"]["B1"] = array();
$hierarchy["B"]["B2"]["B1-1"] = array();
$hierarchy["B"]["B2"]["B1-2"] = array();
Эта структура просто предполагает, что все записи могут иметь дочерние элементы и, следовательно, в любом случае могут быть массивами.Обратите внимание, как это можно сжать в:
$hierarchy = array(
"A" => array(
"A1" => array(),
"A2" => array(),
),
"B" => array(
"B1" => array(
"B1-1" => array(),
"B1-2" => array(),
),
),
);
Порядок сохраняется, так как PHP-массивы в любом случае являются упорядоченными словарями.
Итерации по этой структуре аналогичны другим вариантам, за исключением того, что фактические данныеуже содержится в ключах.