У меня есть массив в PHP, который представляет собой простые строки. Эти строки представляют отношения, которые могут возникать между семьями, расположенными на разных расстояниях. Выглядит это так:
Код: Выделить всё
0 => 'Unknown',
1 => 'Parent',
2 => 'Grandparent',
3 => 'Sibling',
4 => 'Child',
5 => 'Grandchild',
6 => 'Spouse',
7 => 'Self',
9 => 'Step Parent',
10 => 'Step Sibling',
11 => 'Step Child',
etc...
Этот массив работает отлично, но я столкнулся с проблемой: мне хотелось бы иметь возможность сортировать эти элементы чисто настраиваемым способом (в частности, ближе к отец отсутствует, начиная с супруга/брата и заканчивая самыми дальними родственниками, такими как невестка), но я также хотел бы, чтобы этот список со временем дополнялся. Моя первоначальная мысль заключалась в том, чтобы просто упорядочить их в массиве так, как они должны быть упорядочены, но это не позволяет мне добавлять отношения позже (хотя сомнительно, что это когда-либо произойдет, я предпочитаю перестраховаться). Лучшее решение, которое я мог придумать (на мой взгляд, хорошее), — это создать простой объект PHP, который будет содержать как имя отношения, так и произвольное значение «сортировки», например это новое Relation('Unknown', 0);. Проблема в том, что вы не можете создавать экземпляры объектов при создании массива с синтаксисом X => Y, поскольку при попытке написать это возникают синтаксические ошибки:
Код: Выделить всё
0 => new Relation('Unknown', 0),
1 => new Relation('Grandparent', 1),
etc...
Есть ли способ, которым это может сработать, или, возможно, лучшее решение? Кажется, на данный момент мне, возможно, придется сгенерировать массив при первом его запросе (в геттере), используя нажатия массива, а затем сохранить его, но я бы предпочел, чтобы он был хорошо отформатирован. Мне просто не повезло?
Изменить. Чтобы уточнить: ключи сейчас используются как сохраненное значение в базе данных. По сути, в других языках мы используем массив как перечисление.
Подробнее здесь:
https://stackoverflow.com/questions/114 ... priorities