希望一切安好。

我想显示一系列徽章,这些徽章将根据包含特定字符串的字段显示不同的图像。例如,像这样的事情(虽然我知道这可能是不正确的)

            <?php if (stripos($business, "local") !== false) 
echo "badge-,php"/>
	














首页 > 解决方案 >

希望一切安好。

我想显示一系列徽章,这些徽章将根据包含特定字符串的字段显示不同的图像。例如,像这样的事情(虽然我知道这可能是不正确的)

            <?php if (stripos($business, "local") !== false) 
echo "badge-

问题描述

希望一切安好。

我想显示一系列徽章,这些徽章将根据包含特定字符串的字段显示不同的图像。例如,像这样的事情(虽然我知道这可能是不正确的)

            <?php if (stripos($business, "local") !== false) 
echo "badge-icon1.png"; ?>
        <?php if (stripos($business, "interstate") !== false) 
echo "badge-icon2.png"; ?>
        <?php if (stripos($business, "national") !== false) 
echo "badge-icon3.png"; ?>
        <?php if (stripos($business, "international") !== false) 
echo "badge-icon4.png"; ?>

我对 stripos 函数很熟悉,尽管我不确定它是否适合基于一个字段是否包含几个字符串选项之一的一系列替代方案。

有没有更合适的替代方法?

谢谢您的帮助!


我将在此处为遇到此问题的任何人添加此内容。我有同样的问题,我得到这个重复键错误的原因是因为我的旧猫鼬模型曾经对我的一个键强制执行唯一约束,当我从我的猫鼬模型中删除这些唯一约束时,我忘记完全删除数据库中的所有现有索引。当我运行:db.mycollection.getIndexes()时,我发现即使从每个集合中删除了所有文档,旧的唯一索引仍然在我的数据库中。

为了摆脱这些索引,我运行了:db.mycollection.dropIndexes()在 shell 中。

我给您的另一个提示:如果您有一个清除集合并插入新数据的数据库种子脚本(例如,用于您的测试套件),我建议您在清除数据库后删除每个集合的所有索引。您可以像这样在猫鼬中删除模型的索引:myMongooseModel.collection.dropIndexes()

标签: php

解决方案


stripos在这里不太适合,因为它会nationalnational和中匹配international。如果整个$business字符串是单词localinterstate,您可能会发现一个数组更易于使用:

$badges = array('local' => 'badge-icon1.png',
                'interstate' => 'badge-icon2.png',
                'national' => 'badge-icon3.png',
                'international' => 'badge-icon2.png'
                );
echo $badges[$business] ?? '';

如果$business其中可能包含大写字符(例如Local),strtolower($business)请用作数组索引:

echo $badges[strtolower($business)] ?? '';

此外,如果您想要$business一个与 4 个名称之一不匹配的默认图像,您可以将其放在echo

echo $badges[$business] ?? 'badge-placeholder.png';

推荐阅读