我一直在研究这个问题很长一段时间,终于创造了我的答案。
我有三个将输出不同值的数组键。每个键的条件要么为真,要么为 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.......
到目前为止,这工作正常,涵盖了我需要涵盖的每个可能的变化。我想知道是否有更灵活的方法来做到这一点。例如,如果我想添加另一个数组值并比较集体的条件,那么这个解决方案不够灵活,无法做到这一点。我将不得不完全重写开关的情况,尽管这是不可避免的,是否有更有效的方法来做到这一点。我对 PHP 完全陌生,但我在 OOP 上读过一些内容,我只是想知道 OOP 的做法是什么。为了更清楚我想要实现的目标。
// 1. collect the array keys
// 2. evaluate keys and check for certain conditions
// 3. output based on conditions
有没有更灵活的方法来做到这一点?
问候
w9914420