我有一个包含以下键/值的数组:
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 )
我无法将实际值放在网站上,但基本上数组中所有人的值都会发生变化。但至少这应该显示数组中的每个元素如何看起来像大写值,什么不是。
答案 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']);
但这不会是递归的,@只是有人有更好的想法......