【问题标题】:Simplify How to Call the Function PHP简化如何调用 PHP 函数
【发布时间】:2019-08-16 07:51:35
【问题描述】:

如果该单词包含在数组中,我有代码来替换该单词。代码可以工作,但首先有问题,它太长了,我不能重复代码(在页面中调用结果两次或更多次)。我想简化如何调用函数并可以重复调用结果。这是我的代码:

$str = 'APPLE';
$fruits = array('APPLE', 'BANANA', 'AVOCADO');
$string = $str;
foreach ($fruits as $url) {
    if (strpos($string, $url) !== FALSE) {
        echo "FRUIT";
        return true;
    }
}

echo $string;return false;

对于该代码,我想只使用$group 调用结果。谢谢大家...

【问题讨论】:

  • 你应该看看in_array()..
  • 然后 preg_grep 而不是 in_array。但是循环中可能还有其他我们不知道的代码。平心而论,无论哪种方式都需要一个循环。
  • @NigelRen 对我来说,这意味着可能缺乏 PHP 知识,使用 strpos() 来查看一个字符串是否包含在循环数组中.. 似乎包含的不是这个词OP想要。也许对 OP 发表评论以获得清晰,例如例如 APPLE PIE 是否会/应该通过 APPLE PIE ......尽管它很糟糕,但它不是水果
  • 您好,谢谢您的评论..,是的,我还是个新手,当然缺乏 PHP 知识...呵呵,对于我来说,$str 是一个世界,所以它必须是 APPLE,而不是APPLE PIE,是的,我想要一个完全匹配的...

标签: php arrays string if-statement


【解决方案1】:

这是我的答案,基于最后的 OP 评论:

嗨,谢谢您的评论..,是的,我还是个新手,当然缺乏 PHP 知识...呵呵,对于我来说 $str 是一个世界,所以它必须是 APPLE,而不是 APPLE PIE,是的,我想要完全匹配...

如果你有你的水果阵列并且知道针,那么你真正需要做的就是in_array()

function checkFruit($search)
{
    $fruits = ['APPLE', 'BANANA', 'AVOCADO'];
    return (in_array($search, $fruits) ? 'FRUIT' : $search);
}

$str = 'APPLE';
echo 'An apple is a '. checkFruit($str);

$str = 'COW';
echo 'A cow is a '. checkFruit($str);

我们所做的只是检查传递的字符串是否在 $fruits 数组中,如果它返回 'FRUIT'。您可以返回 bool 类型,但除非您在此过程中进行进一步检查,否则在您想要 FRUIT 时似乎有点毫无意义。

see it in action

【讨论】:

  • 嗨..,我一直在尝试您的代码,但是当$str 不在'APPLE', 'BANANA', 'AVOCADO' 之间时,例如,如果$strCOW,则结果是空白而不是COW
  • @benkmad 如果它与您想要的完全匹配,那么这就是您应该使用的答案。另一个答案不需要完全匹配。
【解决方案2】:

第一件事

您已将$str 定义为“APPLE”,然后将$string 定义为$str,为什么不直接将$string 定义为“APPLE”。

第二件事

您会想要使用函数,将代码存储为函数意味着您可以再次调用它而无需重新编写所有代码,请参见下面的示例:

function FindFruit($find, $haystack) {

    foreach($haystack as $k => $v) {

        $result = (strpos($v, $find) !== false ? true : false);

        if($result == true) return 'FRUIT';

    }

    return $find;

}

$fruits = array('APPLE', 'BANANA', 'AVOCADO');
$string = 'APPLE';

$result = FindFruit($string, $fruits);

echo $result;

【讨论】:

  • 嗨,谢谢您的回答..,首先,我将 $str 定义为APPLE,因为它连接到另一个代码。其次,我一直在尝试您的代码,但结果是FRUITAPPLEAPPLE 而不是FRUIT,我不能两次或更多次调用echo $result;。谢谢
  • 我已经更新了我的答案,因此它只会输出“FRUIT”或“APPLE”,具体取决于是否找到它。针对您的第二点,您能否详细说明“我不能两次或多次致电echo result”是什么意思?
  • 我一直在尝试您的代码,结果是 FRUIT1 而不是 FRUIT,当我调用两次时,结果是 FRUIT11 而不是 FRUIT1FRUIT1。对于“我不能调用回显结果两次或更多次”,我的意思是重复调用$result
  • 您能否在问题中尽可能详细地描述您想要的输出是什么。
  • 好的,当$strAPPLEAPPLE 包含在array('APPLE', 'BANANA', 'AVOCADO') 上时,结果是FRUIT 但如果$strCOW,则意味着不在数组中COW。当我打电话给echo $result;' will show FRUIT`但是当我打电话给echo $result; echo $result;' will show FRUITFRUIT`
猜你喜欢
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 2015-08-25
相关资源
最近更新 更多