为什么我的 PHP class 方法在我尝试使用在 foreach 中使用 preg_replace 的值时没有返回任何错误?

Why is my PHP class method returning nothing when I try to use values taken from using preg_replace inside foreach without giving errors?

我试图用一些数据的一些变化来构建一个数组,当使用 preg_replace 并回显值时,它像正常一样工作,但是如果我尝试将这些值存储在一个数组中,该函数只是 returns 什么都没有,也没有给出错误。

这是我正在使用的一段代码,它在 class.

    $actions = array();

    foreach($controllers as $ck => $cv) {

        $cvar = 'br'.$ck.'actions';

        foreach(self::$$cvar as $key => $value) { 
            
            if ($key != $value) {
                $actions[$value] = $key;
            
                if( preg_match('/[A-Z]/',$key)!==0 || preg_match('/[A-Z]/',$value)!==0 )
                {               
                    $key2=strtolower(preg_replace('/(?<=\w)([A-Z])/','-\1',$key)); 
                    $value2=strtolower(preg_replace('/(?<=\w)([A-Z])/','-\1',$value)); 
                    $actions[$value2] = $key2; // Everything works except for this line, if I comment it, it works, if I don't, it simply doesn't return even an error.
                }   

            }
        } 
    }
    return $actions;

是什么导致了这种奇怪的行为?它应该能够像正常一样添加到数组中,但它不能...

所以,我发现了问题所在:

在用于创建 $actions 数组($br(controller)actions 数组)的值数组中,有些值不小心带有一些变音符号(例如单词“Demonstração”),当通过 preg_replace 函数,变成了一些黑色问号框(��替换字符),然后由函数将其作为数组键提供,并以某种方式使函数 return 为空而不是数组.打印值显示函数在所有循环迭代中仍然 运行,但数组根本没有 return 正确地使用这些值。

我通过删除变音符号修复了它,然后该方法 运行 顺畅了。