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 — 文字列の最初の文字を小文字にする
   string の最初の文字が
   ASCII の "A" (0x41) から
   "Z" (0x5a) までの範囲にあれば、
   それを小文字にします。
  
string入力文字列。
変換後の文字列を返します。
| バージョン | 説明 | 
|---|---|
| 8.2.0 | ケース変換は、setlocale() で設定されたロケールに依存しなくなりました。 ASCII 文字のみが変換されます。 | 
例1 lcfirst() の例
<?php
$foo = 'HelloWorld';
echo lcfirst($foo), PHP_EOL;             // helloWorld
$bar = 'HELLO WORLD!';
echo lcfirst($bar), PHP_EOL;             // hELLO WORLD!
echo lcfirst(strtoupper($bar)), PHP_EOL; // hELLO WORLD!
?>
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!!!"  */