我正在使用的代码,但没有给出正确的结果。
foreach ($dbo->query($sql) as $row) {
$a = "$row[Description_code]";
$aa = $a[0]; // first of string
$b = prev($a);
$bb = $b[0]; // first of string
echo "$aa";
if ($aa != $bb){
echo "<p></p>";
}
}
这不应该像它应该的那样工作,$ aa的结果看起来像AAABBCCCCDDEEFFFF等 如果A!= A它应该给分页符,导致html AAA
BB
CCCC
DD
EE
FFFF
答案 0 :(得分:1)
由于你无法理解我在说什么,例如:
php > $a = 'abcdefghijkl';
php > $aa = $a[0];
php > $b = prev($a);
PHP Warning: prev() expects parameter 1 to be array, string given in php shell code on line 1
php > $bb = $b[0];
php > echo "$a $aa $b $bb\n";
abcdefghijkl a
^^-- $a ^--$aa hey! where's $b & $bb ?????
如上面的警告所示,你 对字符串使用prev()
,因为它是 NOT 一个数组。
您的代码应为:
$previous_char = '';
while($row = mysql_fetch_assoc($result)) {
$string = $row['Description of Code'];
$first_char = substr($string, 0, 1);
if ($first_char <> $previous_char) {
echo '<p></p>';
$previous_char = $first_char;
}
echo $first_char;
}
您的代码,即使写得正确,也可能从不工作,因为您从未考虑过提取的PREVIOUS数据行中的数据。您只考虑CURRENT行中的数据。当前行的第一个字符将始终与自身匹配,因此您永远不会有换行符。