PHPで配列内のすべての値を小文字に変換するにはどうすればよいですか?
みたいなarray_change_key_case
?
使用array_map()
:
$yourArray = array_map('strtolower', $yourArray);
ネストされた配列を小文字にする必要がある場合( Yahya Uddinによる):
$yourArray = array_map('nestedLowercase', $yourArray);
function nestedLowercase($value) {
if (is_array($value)) {
return array_map('nestedLowercase', $value);
}
return strtolower($value);
}
完全を期すために、以下も使用できますarray_walk
。
array_walk($yourArray, function(&$value)
{
$value = strtolower($value);
});
PHP ドキュメントから:
コールバックが配列の実際の値を処理する必要がある場合は、コールバックの最初のパラメーターを参照として指定します。次に、これらの要素に加えられた変更は、元の配列自体で行われます。
または参照を使用してforeach
ループ経由で直接:
foreach($yourArray as &$value)
$value = strtolower($value);
これら 2 つのメソッドは配列を「その場で」変更するのに対しarray_map
、配列のコピーを作成して返すことに注意してください。これは、非常に大きな配列の場合には望ましくない場合があります。
array_map() を使用して、最初のパラメーターを 'strtolower' (引用符を含む) に設定し、2 番目のパラメーターを $lower_case_array に設定します。
ネストされた配列内のすべての値を小文字にしたい場合は、次のコードを使用します。
function nestedLowercase($value) {
if (is_array($value)) {
return array_map('nestedLowercase', $value);
}
return strtolower($value);
}
そう:
[ 'A', 'B', ['C-1', 'C-2'], 'D']
戻ります:
[ 'a', 'b', ['c-1', 'c-2'], 'd']
array_change_value_case
続けることで
function array_change_value_case($array, $case = CASE_LOWER){
if ( ! is_array($array)) return false;
foreach ($array as $key => &$value){
if (is_array($value))
call_user_func_array(__function__, array (&$value, $case ) ) ;
else
$array[$key] = ($case == CASE_UPPER )
? strtoupper($array[$key])
: strtolower($array[$key]);
}
return $array;
}
$arrays = array ( 1 => 'ONE', 2=> 'TWO', 3 => 'THREE',
'FOUR' => array ('a' => 'Ahmed', 'b' => 'basem',
'c' => 'Continue'),
5=> 'FIVE',
array('AbCdeF'));
$change_case = array_change_value_case($arrays, CASE_UPPER);
echo "<pre>";
print_r($change_case);
Array ( [1] => one [2] => two [3] => three [FOUR] => Array ( [a] => ahmed [b] => basem [c] => continue ) [5] => five [6] => Array ( [0] => abcdef ) )
array_map()
が正しい方法です。ただし、特定の配列値またはすべての配列値を 1 つずつ小文字に変換する場合は、strtolower()
.
for($i=0; $i < count($array1); $i++) {
$array1[$i] = strtolower($array1[$i]);
}