警告:stripos()在php中至少需要2个参数

时间:2019-05-03 11:07:36

标签: php parameter-passing

我在php中编写了一个简单的函数,并根据传递的数组索引值将参数以大写形式传递给字母,但出现此错误

  

警告:stripos()至少需要2个参数

我做错了任何人都可以建议我。

我是php的新手,刚刚开始学习。

<?php
 function doCapital($string, $array)
 {
     $stringArray = explode(",", $string); 

     for( $i=0; $i<count($stringArray); $i++)
     {
         if(stripos($stringArray)>-1){
             $stringArray[$i] = $stringArray[$i].ucfirst();
             echo $stringArray[$i];
         }
     }

     return implode(" ",$stringArray);
 }

 echo doCapital('abcd', [1,2]);

2 个答案:

答案 0 :(得分:1)

抱歉,在重新阅读我的最后一个答案时,我意识到它似乎非常不友好-我猛击了一个快速答案,没有回头。我要说的是,出现这样的错误是最快的解决方案,请转到php手册并检查所需的参数-在这种情况下,这是一个针和一个草垛(即要搜索的内容和要搜索的内容)。

您可能会在这里找到相同的错误 $stringArray[$i] = $stringArray[$i].ucfirst();作为ucfirst需要传递一个字符串-在这里您像jQuery一样使用它,因此php认为您正在尝试连接一个字符串,它应该说ucfirst($stringArray[$i])

除非字符串中包含逗号,否则也不会爆炸,因此在示例中,您将收到相同的字符串,我想您的意思是使用类似str_split

我还要重申,我认为您需要使用in_array来实现目标,例如:

function doCapital($string, $array)
{
    $stringArray = str_split($string); 

    foreach($stringArray as $key => $value)
    {
        //see if the key exists in the array of characters to change the case for 
        //and update if it does
        if(in_array($key,$array)){
            $stringArray[$key] = ucfirst($value);//thinking about it I might just use strtoupper since there's only one letter anyway - I'm not sure that there's any real performance benefit either way
        }
    }
    return implode("",$stringArray);
 }

 echo doCapital('abcd', [1,2]); //outputs aBCd

答案 1 :(得分:0)

  

stripos-查找字符串中首次出现的不区分大小写的子字符串的位置

您缺少第二个参数,使用功能stripos的正确语法是

stripos ($haystack ,$needle);

这里

$haystack-> 您要搜索的字符串

$needle-> 子字符串

例如:

$findme    = 'x';
$mystring1 = 'xyz';
$pos1 = stripos($mystring1, $findme);
if ($pos1 !== false) {
   echo "We found '$findme' in '$mystring1' at position $pos1";
}