note 100212 deleted from function.soundex by danbrown

From: Date: Fri, 01 Oct 2010 12:00:26 +0000
Subject: note 100212 deleted from function.soundex by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-172872@lists.php.net to get a copy of this message
Note Submitter: siegfried at si-gi dot ch ---- In Nicolas Zimmers Code (erst mal VIELEN DANK DAFÜR!) gibt es einen kleinen Fehler, der php veranlasst einen uninitialized string offset zu melden, und zwar in folgendem Codestück: <?php for ($i=0;$i<$len;$i++){ $value[$i]=""; //Exceptions if ($i==0 AND $word[$i].$word[$i+1]=="cr") $value[$i]=4; foreach ($exceptionsLeading as $code=>$letters) { if (in_array($word[$i].$word[$i+1],$letters)){ $value[$i]=$code; } } ?> Da die Variable $i bis zum Wert $len - 1 steigt und $len die Länge des als Parameter mitgegebenen Wortes ist, wird der Index "$word[i+1]" am Ende des Wortes nicht mehr zum Char-Array $word gehören. Wir müssen die Bedingung in der foreach-Schleife deshalb leicht modifizieren: <?php for ($i=0;$i<$len;$i++){ $value[$i]=""; //Exceptions if ($i==0 AND $word[$i].$word[$i+1]=="cr") $value[$i]=4; foreach ($exceptionsLeading as $code=>$letters) { //Diese Bedingung ist modifiziert: if (($i < $len - 1) && in_array($word[$i].$word[$i+1],$letters)){ $value[$i]=$code; } } if ($i!=0 AND (in_array($word[$i-1].$word[$i], $exceptionsFollowing))) { $value[$i]=8; } //Normal encoding if ($value[$i]==""){ foreach ($codingTable as $code=>$letters) { if (in_array($word[$i],$letters))$value[$i]=$code; } } } ?>

« previous php.notes (#172872) next »