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 — Wandelt den ersten Buchstaben eines Strings in einen Kleinbuchstaben um
   Wandelt das erste Zeichen von string in einen
   Kleinbuchstaben um, sofern es ein ASCII-Zeichen im Bereich von
   "A" (0x41) bis "Z" (0x5a) ist, und
   gibt die veränderte Zeichenkette zurück.
  
stringDer Eingabestring.
Gibt die verarbeitete Zeichenkette zurück.
| Version | Beschreibung | 
|---|---|
| 8.2.0 | Die Umwandlung von Groß- und Kleinschreibung hängt nicht mehr von der mit setlocale() eingestellten Locale ab. Es werden nur ASCII-Zeichen umgewandelt. | 
Beispiel #1 lcfirst()-Beispiel
<?php
$foo = 'HalloWelt';
echo lcfirst($foo), PHP_EOL;             // halloWelt
$bar = 'HALLO WELT!';
echo lcfirst($bar), PHP_EOL;             // hALLO WELT!
echo lcfirst(strtoupper($bar)), PHP_EOL; // hALLO WELT!
?>
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!!!"  */