我有一個像這樣的多維陣列(請忽略 strlen):
array(2) {
["document"]=>
array(16) {
[0]=>
string(14) "Value1"
[1]=>
string(4) "Value2"
[2]=>
string(30) "Value3"
...
我想為多維陣列(檔案等)的每個級別上的每個元素(Value1、Value2 等)呼叫“strtoupper”。
我試過array_walk_recursive($array, "strtoupper");了,但它不起作用。但是為什么,我能做什么?
uj5u.com熱心網友回復:
function recurse(array $array): array {
$result = [];
foreach ($array as $key => $value) {
$newKey = is_string($key) ? strtoupper($key) : $key;
if (is_array($value)) {
$result[$newKey] = recurse($value);
} elseif (is_string($value)) {
$result[$newKey] = strtoupper($value);
} else {
$result[$newKey] = $value;
}
}
return $result;
}
$array = [
'document' => [
'Value1',
'Value2',
'Value3'
],
'document2' => [
'Value21',
'Value22',
'document2' => [ 'Value221', 222, 'Value223' ],
23
]
];
$result = recurse($array);
print_r($result);
uj5u.com熱心網友回復:
由于strtoupper不會更改原始值,而是回傳新值,因此您應該這樣做:
array_walk_recursive(
$array,
// pass value by reference.
// Changing it will also reflect changes in original array
function (&$value) { $value = strtoupper($value); }
);
簡單的小提琴。
此提示也在手冊中進行了描述,請參閱callback引數說明的注釋。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474615.html
