"first_value", "second_key" => "second_valu-6ren">
gpt4 book ai didi

php - 使用 array_map() 访问一级键而不调用 `array_keys()`

转载 作者:IT老高 更新时间:2023-10-28 11:42:18 25 4
gpt4 key购买 nike

有没有办法做这样的事情:

$test_array = array(
"first_key" => "first_value",
"second_key" => "second_value"
);

var_dump(
array_map(
function($a, $b) {
return "$a loves $b";
},
array_keys($test_array),
array_values($test_array)
)
);

但是不是调用array_keysarray_values,而是直接传递$test_array变量?

想要的输出是:

array(2) {
[0]=>
string(27) "first_key loves first_value"
[1]=>
string(29) "second_key loves second_value"
}

最佳答案

不适用于array_map,因为它不处理键。

array_walk确实:

$test_array = array("first_key" => "first_value",
"second_key" => "second_value");
array_walk($test_array, function(&$a, $b) { $a = "$b loves $a"; });
var_dump($test_array);

// array(2) {
// ["first_key"]=>
// string(27) "first_key loves first_value"
// ["second_key"]=>
// string(29) "second_key loves second_value"
// }

它确实改变了作为参数给出的数组,所以它不完全是函数式编程(因为你有这样标记的问题)。此外,正如评论中所指出的,这只会更改数组的值,因此键不会是您在问题中指定的键。

如果你愿意,你可以编写一个函数来修复上面的点,如下所示:

function mymapper($arrayparam, $valuecallback) {
$resultarr = array();
foreach ($arrayparam as $key => $value) {
$resultarr[] = $valuecallback($key, $value);
}
return $resultarr;
}

$test_array = array("first_key" => "first_value",
"second_key" => "second_value");
$new_array = mymapper($test_array, function($a, $b) { return "$a loves $b"; });
var_dump($new_array);

// array(2) {
// [0]=>
// string(27) "first_key loves first_value"
// [1]=>
// string(29) "second_key loves second_value"
// }

关于php - 使用 array_map() 访问一级键而不调用 `array_keys()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13036160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com