Я искал эту проблему довольно давно и, наконец, создал свой ответ.Сравнение значений ключа Array для определения условных операторов методом ООП?
У меня есть три ключа массива, которые выдают разные значения. Условие каждого ключа будет либо истинным, либо NULL, и это то, что я тестирую для своего массива, просто и выглядит так.
$a = array();
$a['Font'] = logix::templateParams('googleWebFont');
$a['Font2'] = logix::templateParams('googleWebFont2');
$a['Font3'] = logix::templateParams('googleWebFont3');
Я хотел создать выход в зависимости от коллективного состояния всех трех клавиш, например , если один ключ является недействительным, то результат будет отличаться, то если у меня было 2 ключа «NULL». Мне удалось создать простой переключатель, который охватывал диапазон значений, которые мне нужны для покрытия моего кода, выглядит так.
$a = array();
$a['Font'] = logix::templateParams('googleWebFont');
$a['Font2'] = logix::templateParams('googleWebFont2');
$a['Font3'] = logix::templateParams('googleWebFont3');
switch (TRUE){
// No font selected
case $a['Font'] == NULL && $a['Font2'] == NULL && $a['Font3'] == NULL:
echo 'nothing';
break;
// First googlefont selected only
case $a['Font'] && $a['Font2'] == NULL && $a['Font3'] == NULL:
echo 'one';
break;
// Second googlefont selected only
case $a['Font2'] && $a['Font'] == NULL && $a['Font3'] == NULL:
echo 'two';
break;
// Third googlefont selected only
case $a['Font3'] && $a['Font2'] == NULL && $a['Font'] == NULL:
echo 'three';
break;
// and Continues to cover another 10 more states.......
До сих пор это прекрасно работает и охватывает все возможные варианты, которые мне необходимо покрыть. Мне было интересно, есть ли более гибкий способ сделать это. Например, если бы я хотел добавить другое значение массива и сравнить состояние коллектива, то это решение недостаточно гибко для этого. Я должен был бы полностью переписать случай с коммутатором, хотя это неизбежно, есть более эффективный способ сделать это. Im совершенно новый для PHP, но я немного читал о ООП, и я просто задавался вопросом, каким будет способ ООП. Чтобы быть более ясным, чего я пытаюсь достичь.
// 1. collect the array keys
// 2. evaluate keys and check for certain conditions
// 3. output based on conditions
Есть ли более гибкий способ сделать это?
рассматривает
w9914420
Привет, Бармар. Интересно, можете ли вы предоставить только фрагмент кода, чтобы я мог лучше понять вашу концепцию. – W9914420
Я не уверен, что больше вам нужно, чем фрагмент в моем ответе. Вы просто заполните эту таблицу всеми необходимыми значениями и получите доступ к ней, как я показал. Вероятно, вы захотите обернуть его функцией. – Barmar
привет Бармар, я понимаю, что вы имеете в виду, тогда я мог бы использовать вывод функции в case case. благодаря! – W9914420