将特定数组值更改为大写

时间:2013-10-19 17:43:07

标签: php arrays sorting

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

FirstName,LastName,EmployeeNumber,Location

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

我尝试过使用

array_map('strtoupper', $myARR);

但是我收到了这个错误:

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

我认为这是因为员工编号是数字,因此错误输出是因为数字不是字符串?我不知道我还能尝试什么,尝试这个。原因是我将两个数组合并为一个。来自DB的阵列之一是所有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 )

我无法将实际值放在网站上,但基本上数组中所有人的值都会发生变化。但至少这应该显示数组中的每个元素如何看起来像大写值,什么不是。

3 个答案:

答案 0 :(得分:1)

foreach ($employees as $e) {
  $e['firstName'] = strtoupper($e['firstName']);
  ... same for lastName
}

答案 1 :(得分:0)

作为解析all to upper case的替代方法..您可以使用不区分大小写的排序函数:natcasesort

$ sorted = natcasesort($ myARR)

答案 2 :(得分:0)

一个简单的方法就是

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

但这不会是递归的,@只是有人有更好的想法......