Easiest work-around I've found for <5.3:
<?php
$string = "CamelCase"
$string{0} = strtolower($string{0})
echo $string; // outputs camelCase
?>(PHP 5 >= 5.3.0, PHP 7, PHP 8)
lcfirst — Torna minúsculo o primeiro caractere de uma string
   Retorna uma string com o primeiro caractere de
   string em letra minúscula se o caractere
   for um ASCII na faixa de "A" (0x41) a
   "Z" (0x5a).
  
stringA string de entrada.
Retorna a string resultante.
| Versão | Descrição | 
|---|---|
| 8.2.0 | A conversão de maiúsculas e minúsculas não depende mais da localidade definida com setlocale(). Somente caracteres ASCII serão convertidos. | 
Exemplo #1 Exemplo de lcfirst()
<?php
$foo = 'OlaMundo';
echo lcfirst($foo), PHP_EOL;      // olaMundo
$bar = 'OLA MUNDO!';
echo lcfirst($bar);               // oLA MUNDO!
echo lcfirst(strtoupper($bar));   // oLA MUNDO!
?>
Easiest work-around I've found for <5.3:
<?php
$string = "CamelCase"
$string{0} = strtolower($string{0})
echo $string; // outputs camelCase
?>In some cases maybe more useful?
 $lower = strtolower( substr($upper,0,1) ) . substr($upper,1);A slight modification from Northie's post here ( http://us2.php.net/manual/en/function.ucfirst.php#68443), where lcfirst may not exist in your PHP build:
<?php
if(false === function_exists('lcfirst'))
{
    /**
     * Make a string's first character lowercase
     *
     * @param string $str
     * @return string the resulting string.
     */
    function lcfirst( $str ) {
        $str[0] = strtolower($str[0]);
        return (string)$str;
    }
}
/* Tests */
echo var_dump(lcFirst(NULL)).'<br />';    /* string(0) ""  */
echo var_dump(lcFirst(''))  .'<br />';    /* string(0) ""  */
echo var_dump(lcFirst('S')) .'<br />';    /* string(1) "S" */
echo var_dump(lcFirst('É')) .'<br />';    /* string(0) "�" */
echo var_dump(lcFirst('Hello World!!!')); /* string(14) "hello World!!!"  */