Предупреждение: stripos () ожидает как минимум 2 параметра в php - PullRequest
0 голосов
/ 03 мая 2019

Я написал простую функцию в 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 ]

1 голос
/ 03 мая 2019

Извиняюсь, перечитывая мой последний ответ, я понимаю, что он показался мне очень недружелюбным - я нашел быстрый ответ и не прочитал его. Я пытался сказать, что при таких ошибках самые быстрые решения - обратиться к руководству по 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
0 голосов
/ 03 мая 2019

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";
}
...