私はかなり長い間この問題を見ていて、ついに私の答えを作成しました。
異なる値を出力する 3 つの配列キーがあります。各キーの条件は true または NULL のいずれかになります。これは、配列が単純で次のように見えることをテストしているものです。
$a = array();
$a['Font'] = logix::templateParams('googleWebFont');
$a['Font2'] = logix::templateParams('googleWebFont2');
$a['Font3'] = logix::templateParams('googleWebFont3');
たとえば、1 つのキーが null の場合、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 について少し読んだことがあります。私が達成しようとしていることをより明確にするために。
// 1. collect the array keys
// 2. evaluate keys and check for certain conditions
// 3. output based on conditions
これを行うより柔軟な方法はありますか?
よろしく
w9914420