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