<?php
$items = [
'item_a' => ['require' => ['item_b']],
'item_b' => ['require' => []],
'item_c' => ['require' => ['item_a']],
'item_d' => ['require' => ['item_a', 'item_e']],
'item_e' => ['require' => ['item_a']],
];
$items[$key]['name'] = $key;
}
uasort($items, function($a, $b) { return in_array($b['name'], $a['require']) || empty($b['require']); });
unset($items[$key]['name']); echo $key . PHP_EOL;
}
PD9waHAKCiRpdGVtcyA9IFsKICAnaXRlbV9hJyA9PiBbJ3JlcXVpcmUnID0+IFsnaXRlbV9iJ11dLAogICdpdGVtX2InID0+IFsncmVxdWlyZScgPT4gW11dLAogICdpdGVtX2MnID0+IFsncmVxdWlyZScgPT4gWydpdGVtX2EnXV0sCiAgJ2l0ZW1fZCcgPT4gWydyZXF1aXJlJyA9PiBbJ2l0ZW1fYScsICdpdGVtX2UnXV0sCiAgJ2l0ZW1fZScgPT4gWydyZXF1aXJlJyA9PiBbJ2l0ZW1fYSddXSwKXTsKCmZvcmVhY2ggKGFycmF5X2tleXMoJGl0ZW1zKSBhcyAka2V5KSB7CgkkaXRlbXNbJGtleV1bJ25hbWUnXSA9ICRrZXk7Cn0KCnVhc29ydCgkaXRlbXMsIGZ1bmN0aW9uKCRhLCAkYikgewoJcmV0dXJuIGluX2FycmF5KCRiWyduYW1lJ10sICRhWydyZXF1aXJlJ10pIHx8IGVtcHR5KCRiWydyZXF1aXJlJ10pOwp9KTsgCgpmb3JlYWNoIChhcnJheV9rZXlzKCRpdGVtcykgYXMgJGtleSkgewoJdW5zZXQoJGl0ZW1zWyRrZXldWyduYW1lJ10pOwoJZWNobyAka2V5IC4gUEhQX0VPTDsKfQ==