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 — Make a string's first character lowercase
   Returns a string with the first character of
   string lowercased if that character is
   an ASCII character in the range "A" (0x41) to
   "Z" (0x5a).
  
stringThe input string.
Returns the resulting string.
| Versione | Descrizione | 
|---|---|
| 8.2.0 | Case conversion no longer depends on the locale set with setlocale(). Only ASCII characters will be converted. | 
Example #1 lcfirst() example
<?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!!!"  */