-1

次のキー/値を持つ配列があります。

名、姓、従業員番号、場所

FirstName と LastName に含まれる値をすべて大文字に変換する必要があります。

使ってみました

array_map('strtoupper', $myARR);

しかし、私はこのエラーが発生します:

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

従業員番号が数値だからだと思いますが、数値は文字列ではないのでエラーになりますか?これを試みるために、他に何を試すことができるかわかりません。その理由は、2 つの配列を 1 つに結合したためです。DB からの配列の 1 つはすべて UPPER にありますが、もう 1 つはそうではありません。これにより、BROWN と Brown が同じ値として認識されないため、配列を適切に並べ替えることができなくなります。これら 5 つの名前を並べ替えると、次のようになります。

BATMAN CHARLES BYRON Carl Bill  

その結果がこれ

BATMAN
BYRON
Bill
CHARLES
Carl

ucfirst 値をすべて UPPER にすることができれば、並べ替えは正しく機能します (ucfirst のみを持つテーブルの 1 つの値は 2 文字のニックネーム (AJ) であり、すべて UPPER である他のデータと正しく並べ替えられます)。 .

配列のこれら2つの部分だけで値をUPPERにする方法についてのアイデアはありますか? どんな助けでも大歓迎です。

編集

配列から取得したデータを次に示します。

最初の文字を大文字にした配列の部分

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

すべての文字を大文字にした配列の部分

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

ここの Web サイトに実際の値を掲載することはできませんが、基本的に、配列内のすべての人に対して値が変化します。しかし、少なくともこれは、配列内の各要素が大文字の値とそうでないものまでどのように見えるかを示す必要があります。

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 に答える