【问题标题】:ad characters to all strings in array php [closed]向数组php中的所有字符串添加字符[关闭]
【发布时间】:2014-05-22 02:56:53
【问题描述】:

我有一个表单,有人会输入“xbrand tv”作为一个真实的例子,比如说“sony tv”,然后我使用 post 方法将数据传递到下一页。

我正在使用 in_array 来正确引导结果。下面的代码设置方式,如果有人输入“sony TV”,就会显示else语句。

$product_add = $_POST['syd'];
$pa = strtolower($product_add);
$tv= array('sony tv', 'vizio tv', 'panasonic tv', 'lg tv', 'samsung tv', 'phillips tv', 'sharp tv', 'dynex tv', 'toshiba tv');
    if (in_array($pa, $tv))
    {
            //do stuff
           }
else {
    // do something else
}

显然我可以将“索尼电视”添加到阵列中,但我觉得必须有一种更有效的方法来做到这一点。

我想让我的 $tv 数组看起来像这样:

$tv= array('sony', 'vizio', 'panasonic', 'lg', 'samsung', 'phillips', 'sharp', 'dynex', 'toshiba');

如果“sony tv”或“sony TV”以初始形式输入,则它会与初始 if 语句一致。那可能吗?如果是这样,我应该怎么做?

【问题讨论】:

  • 有很多方法可以解决它。遍历品牌数组并检查是否在输入中找到每个品牌而不是完全匹配。
  • 我将问题更新为更具体,但基本上不是在数组中有“索尼电视”和“索尼电视”,我只想有“索尼”@marty
  • 是的,因此您使用输入的短语,即“索尼电视”,遍历品牌列表,并检查输入的短语中是否存在每个品牌名称。

标签: php arrays variables


【解决方案1】:

您可以使用strpos() 检查输入的字符串是否包含数组中列出的任何品牌。这应该适合你:

$product_add = $_POST['syd'];
$pa = strtolower($product_add);
$tv = array('sony', 'vizio', 'panasonic', 'lg', 'samsung', 'phillips', 'sharp', 'dynex', 'toshiba');
$found = false;
foreach ($tv as $brand) {
    if (strpos($pa, $brand) !== false) {
        $found = true;
        break;
    }
}
if ($found)
{
    // Found one of the brand names in the user's string
}
else {
    // Did not find one of the brand names in the user's string
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多