fork download
  1. <?php
  2.  
  3. $items = [
  4. 'item_a' => ['require' => ['item_b']],
  5. 'item_b' => ['require' => []],
  6. 'item_c' => ['require' => ['item_a']],
  7. 'item_d' => ['require' => ['item_a', 'item_e']],
  8. 'item_e' => ['require' => ['item_a']],
  9. ];
  10.  
  11. foreach (array_keys($items) as $key) {
  12. $items[$key]['name'] = $key;
  13. }
  14.  
  15. uasort($items, function($a, $b) {
  16. return in_array($b['name'], $a['require']) || empty($b['require']);
  17. });
  18.  
  19. foreach (array_keys($items) as $key) {
  20. unset($items[$key]['name']);
  21. echo $key . PHP_EOL;
  22. }
Success #stdin #stdout 0.01s 52488KB
stdin
Standard input is empty
stdout
item_b
item_a
item_e
item_c
item_d