重複の可能性:
配列を「,」で分解し、最後の項目の前に「and」を追加
WordPress テーマをカスタマイズしており、管理者のユーザー プロファイル ページにいくつかのチェックボックスを作成しました。正確には 3 つです。ユーザーが各ボックスをチェックすると、プロファイルを保存するときに、そのボックスの値が配列 calle $goals に保存されます。これはすべてうまくいきます。
テンプレートページで、ユーザーが選択した目標に基づいて特定のコンテンツを表示する方法についていくつかのテストを行っているため、配列に各値が含まれているかどうか、次に目標の組み合わせが含まれているかどうかを確認する次のコードを作成しました。それらの選択に基づいて特定のコンテンツをエコーします。それは問題なく動作しますが、コードが肥大化し、合理化できると感じています。これは、私が常に自分のコードでやろうとしていることです。より少ないコードで同じ結果を得る方法について、ご意見をお寄せいただければ幸いです。ありがとう。
$goals = get_user_meta( $userID, 'goals', $single );
if (in_array('Weight Loss', $goals, true) && !in_array('Improve Fitness', $goals, true) && !in_array('Improve Health', $goals, true)) {
echo 'Weight Loss';
} elseif (in_array('Improve Fitness', $goals, true) && !in_array('Weight Loss', $goals, true) && !in_array('Improve Health', $goals, true)) {
echo 'Improve Fitness';
} elseif (in_array('Improve Health', $goals, true) && !in_array('Improve Fitness', $goals, true) && !in_array('Weight Loss', $goals, true)) {
echo 'Improve Health';
} elseif (in_array('Weight Loss', $goals, true) && in_array('Improve Fitness', $goals, true) && !in_array('Improve Health', $goals, true)) {
echo 'Weight Loss and Improve Fitness';
} elseif (in_array('Weight Loss', $goals, true) && !in_array('Improve Fitness', $goals, true) && in_array('Improve Health', $goals, true)) {
echo 'Weight Loss and Improve Health';
} elseif (!in_array('Weight Loss', $goals, true) && in_array('Improve Fitness', $goals, true) && in_array('Improve Health', $goals, true)) {
echo 'Improve Fitness and Improve Health';
} elseif (in_array('Weight Loss', $goals, true) && in_array('Improve Fitness', $goals, true) && in_array('Improve Health', $goals, true)) {
echo 'Weight Loss, Improve Fitness and Improve Health';
} else {
echo 'Nothing set';
}