PHP in_array看看是否有更好的方法来做到这一点

时间:2012-11-30 13:49:02

标签: php arrays

我的很多网站共享相同的资产,信用卡就是其中之一。所以我创建了一个包含所有信用卡图标的精灵。

在我的信息文件中,我有一个变量:

$credit_cards = array("visa", "mastercard", "discover", "amex");

然后在我显示图标的页脚中,我有这样的东西:

<?php
if (in_array("visa", $credit_cards)) {
    echo "<span class='card-visa'></span>";
}
if (in_array("mastercard", $credit_cards)) {
    echo "<span class='card-mastercard'></span>";
}
if (in_array("discover", $credit_cards)) {
    echo "<span class='card-discover'></span>";
}
if (in_array("amex", $credit_cards)) {
    echo "<span class='card-amex'></span>";
}
?>

所以在我的开始模板上,我所要做的就是编辑信息文件并选择我想要显示的信用卡。如果将来客户想要添加或删除他们不再接受的卡,我只是将其从阵列中取出。

你可能会觉得这很疯狂,但还有更多它只是4大信用卡。这是针对汽车行业的,还有许多其他卡,如怀特,固特异,汽车护理,通用电气,外壳等。我只是粘贴了4个主要的片段。

有更好的方法吗?我知道上面的解决方案非常混乱,我觉得那里必须有一个更清洁的解决方案..我只需要一些你认为最好的建议。

谢谢!

2 个答案:

答案 0 :(得分:9)

foreach ($credit_cards as $card) {
    echo "<span class='card-$card'></span>";
}

这是一致的命名方案得到回报的地方。

答案 1 :(得分:0)

不确定“更好”是什么意思,但你至少可以分解共享代码:

<?php
function print_card($card) {
    if (in_array($card, $GLOBALS['credit_cards'])) {
        echo "<span class='card-$card'></span>";
    }
}

print_card('visa');
print_card('mastercard');
print_card('discover');
print_card('amex');
?>