数据库 select 结果名称首字母大写

database select result upper case first letter of name

if ($stmt - > execute()) {
    if ($stmt - > rowCount() > 0) {
        while ($selected_row = $stmt - > fetch(PDO::FETCH_ASSOC)) {
            echo ucwords($selected_row[$name]).
            "   ";
            $basicinfo1[] = $selected_row[$name];
        }
        $input = array_map("unserialize", array_unique(array_map("serialize", $basicinfo1)));
        echo json_encode($input, JSON_UNESCAPED_UNICODE);
        //echo $_GET['callback'] . '('.json_encode($basicinfo1).')';
    }
}

回声结​​果

JEHOMAR MARIA JAMAICA MARIO MARIEGRACE MARIO MARY ANNE MARILYN MARIA CHRISTINA MARIE GRACE MARBIE MARIA JASMIN MARY JANE MARCIANA LEO MARCCO MARGOT MARIA CRISTINA MARIA TERESA MARK ANTHONY MARK ANA MARIE RALPH MARLON MARIANNE JOEMAR MARITES SHIELA MARIE MARIBETH MARIVIC MARIAN MARCELINO ALMEN MARTIN MARK SUNNY MARLOU MARY JANE MARIA RIA ELMAR MARILYN MARGARITA MARIELA MARJORIE ANNE MARTIN MARIONITO JHOMAR MARIA LUISA MARIE KRISTINE MARY ANN MARCELO MARGIE MARIO CHARL-MARI GEMARIE MARIO JOEMAR MARIA LENIE MARILOU MARILOU MARJORIE MARIA PAZ JOSE MARIE MARYCRIS MARVIN MARY FRANCESS JOURIEMAR MARIE Rose MARY JANE ROSEMARIE MARILYN MARIE-MONIQUE MARIANETH MARIBEL MARICEL MARILYN MARK ANTHONY MARVIN LOEWEN MARK MARVEL MARIANO MARTE JOVEMAR MARIBETH MARIVER MARTE MARILOU EDDIMAR MARIO MARISSA MARITES MARLYN MARWIN MARIETTA MARY ANN MARIVI MARYJANE ANNA MARIA EMMAR MARIO MARITES MARK VINCENT MARILYN MARIBEL MARICEL MARISSA MARK ANTHONY MARK KNEP MARK REGGIE

在此代码中,我尝试使用 ucwords 更改名称的第一个字母,然后使用选定的行 ($selected_row[$name]),但回显显示名称没有变化。还是大写字母。还有其他方法可以将首字母大写的单词更改为大写

试试 -

ucwords(strtolower($selected_row[$name]))

ucwords 将只转换第一个字母,但不会处理其余部分。所以首先 strtolower 将其转换为小写,然后 ucwords 将第一个字母转换为大写。

如果您不使用 ascii(您应该),使用 mb_ 函数来处理 UTF-8 字符集会很有用。这种情况会发生 when/if 你的数据库中会有外国名字。

试试

mb_convert_case($selected_row[$name], MB_CASE_TITLE, "UTF-8");

MB_CASE_TITLE 所有单词都小写,但第一个字母大写。与 ucwords(strtolower(...)) 相比,这是一次调用,它处理 UTF-8 字符。


了解两种方法差异的示例:

$str = "Hello guys! I'm émile ÉÀ!";
echo ucwords(strtolower($str));
echo '<br />';
echo mb_convert_case($str, MB_CASE_TITLE, "UTF-8");

产出

Hello Guys! I'm émile ÉÀ!

Hello Guys! I'm Émile Éà!

在第一种情况下,strtolower 不会将大写字母转换为小写字母(最后一个字母仍然是 À 而不是 à)。并且 uwords 不会将 émile 的 é 大写。这在第二种情况下使用 mb_convert_case.

正确处理