希望你没事。我的问题:
在MYSQL中,我有一个包含此类字段的表
字段名称:TAGS 价值:xavier,celine,marise,leon,john,cathy,polux,maurice
在PHP中,我这样做
$xwords = array();
function array_rpush(&$arr, $item)
{
$arr = array_pad($arr, -(count($arr) + 1), $item);
}
$tags = requete("SELECT tags FROM tbl_tags LIMIT 1;");
while($dtags = mysql_fetch_assoc($tags)){
$words .= array_rpush($xwords, $dtags['tags']);
}
// MY ARRAY XWORDS FOR DEBUG
//
// Array ( [0] => xavier, celine, marise, leon, john, cathy, polux, maurice
//
我的脚本需要找到此列表中每个单词的第一个字母,并检查它是否与A / B / C匹配(我创建一个A-Z索引页)
// COUNT $XWORDS VALUE
$total = count($xwords);
// total =1
for($i=0; $i < $total; $i++)
{
$wtags = explode(",",$xwords[$i]);
// wtags = Array ( [0] => xavier [1] => celine [2] => marise... )
while (list($idx,$val) = each($wtags)) {
echo $val{0}."<br>";
echo substr($val,0,1)."<br>";
}
}
echo $val{0}."<br>";
或者echo substr($val,0,1)."<br>"
只给我x
,之后没有任何内容(虽然只给出了数组中第一个记录的第一个字母......太棒了:))
也许你可以帮我找到解决方案。感谢
答案 0 :(得分:2)
您的代码存在问题:它会生成:
数组([0] =&gt;“xavier”[1] =&gt;“celine”[2] =&gt;“marise”......)
所以$ val [0] =“”。尝试修剪($ val):
$val = trim($val);
print $val[0];
答案 1 :(得分:0)
$sum = array();
foreach($wtags as $tag){
$tag = trim($tag);
empty($sum[$tag{0}]) ? // if we don't have a $sum element for this letter
$sum[$tag{0}] = 1 : // we initialize it
$sum[$tag{0}]++; // else, we sum 1 element to the count.
//$tag{0} is the first letter.
}
// the array $sum has the total of tags under each letter
//
// $sum[x] = 1
// $sum[c] = 2
// $sum[m] = 2
// $sum[l] = 1
// $sum[j] = 1
// $sum[p] = 1