数组未在foreach循环外更新

时间:2019-10-03 09:28:09

标签: php

我有一段正在苦苦挣扎的代码。我仍处于第一步,因此很可能是由于一些愚蠢的错误造成的。 我想将每个单词的第一个字符变成大写,但由于某种原因,它不起作用,我无法弄清楚。

        $split = explode(" ",$string);

        foreach ($split as $word) {

            if (ord($word[0]) >= 97 & ord($word[0]) <= 122){
                $word[0] = chr(ord($word[0]) - 32);              
        }}

        return $string;
    }

3 个答案:

答案 0 :(得分:3)

您应该对此有所不同。

让我们首先创建拆分:

$words = explode(' ', $words_string);

现在让我们遍历这些单词,并使用$key参数记住它们的索引。

foreach($words as $index => $word) { //So we remember the key in the array using $k => $v

   $words[$index] = ucfirst($word); //This will uppercase the first letter.

}

答案 1 :(得分:0)

我链接的问题中解释了其不起作用的原因。

但是,根据您的情况,解决方案要简单得多。如果您使用多字节字符串,则只能使用ucwords()函数或将MB_CASE_TITLEmb_convert_case()一起使用。

答案 2 :(得分:0)

PHP提供了内置功能,可帮助您将每个单词的第一个字符转换为字符串的大写形式,而不会发生爆炸和迭代。

style.scss

编辑:让我们包括一个示例来帮助您确定输出内容:

ucwords( $string );

将返回

echo ucwords("Hi this is just a simple test of converting each word's first charater to uppercase!");