-1

我有一个包含以下键/值的数组:

名字、姓氏、员工编号、位置

我需要将 FirstName 和 LastName 中包含的值全部转换为大写。

我试过使用

array_map('strtoupper', $myARR);

但我得到这个错误:

Warning: strtoupper() expects parameter 1 to be string, array given in 

我认为这是因为员工编号是数字,所以它会因为数字不是字符串而出错?我不知道我还能尝试什么来尝试这个。原因是我将两个数组合二为一。来自数据库的阵列之一是全部 UPPER,而另一个则不是。这导致我无法正确排序数组,因为它没有将 BROWN 和 Brown 视为相同的值。如果我对这五个名字进行排序:

BATMAN CHARLES BYRON Carl Bill  

结果是这样的

BATMAN
BYRON
Bill
CHARLES
Carl

如果我可以让 ucfirst 值全部为 UPPER,那么排序将正常工作(因为表中只有 ucfirst 的一个值是 2 个字母的昵称(AJ),并且它与其他全部为 UPPER 的数据正确排序) .

关于如何让数组的这两个部分的值变为 UPPER 的任何想法?任何帮助将不胜感激。

编辑

以下是从数组中提取的一些数据:

第一个字母大写的数组部分

[59] => Array ( 
    [0] => First 
    [1] => Last 
    [2] => 123456 
    [3] => Location )

所有字母大写的数组部分

[1116] => Array ( 
      [0] => FIRST
      [1] => LAST
      [2] => 123456
      [3] => Location )

我不能将实际值放在网站上,但基本上数组中所有人的值都会改变。但至少这应该显示数组中的每个元素看起来是大写的值,而不是大写的值。

4

3 回答 3

1
foreach ($employees as $e) {
  $e['firstName'] = strtoupper($e['firstName']);
  ... same for lastName
}
于 2013-10-19T17:51:55.153 回答
0

作为将全部解析为大写的替代方法。您可以只使用不区分大小写的排序功能:natcasesort

$sorted = natcasesort($myARR)

于 2013-10-19T17:54:55.947 回答
0

一个简单的方法是

$Capsfield = strtoupper($youarray['yourfeild']);

但这不会是递归的,@Just Somebody 给出了更好的想法......

于 2013-10-19T17:55:37.270 回答