从单词列表中创建起始字母列表

问题描述 投票:0回答:2

在MYSQL中,我有一个包含这种类型字段的表

  • 字段名称:标签
  • 价值:泽维尔,席琳,玛丽斯,莱昂,约翰,凯西,波勒克斯,莫里斯

在 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
,后面什么都不给(同时只给我数组中第一个记录的第一个字母)。

php
2个回答
2
投票

您的代码的问题在于它生成:

数组 ( [0] => "xavier" [1] => " celine" [2] => " marise"... )

所以 $val[0] = " "。尝试修剪($val):

$val = trim($val);
print $val[0];

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
© www.soinside.com 2019 - 2024. All rights reserved.