我需要在数组中的每个键后面添加一个前缀。前缀是在我正在使用的create_function之外定义的。如何从内部访问它?
这里是我的代码($ result是我的键数组=> value):
$groupName = $reader->getAttribute('name');
$resultKeyPrefixGroup = array_combine(
array_map(create_function('$k', 'return $groupName."/".$k;'), array_keys($result)),
$result
);
谢谢!
答案 0 :(得分:1)
这伤了我的脑袋,使我的脑袋四处逃逸:
<?php
$result =
[
'1' => 'One',
'2' => 'Two'
];
$groupName = 'braves';
$resultKeyPrefixGroup = array_combine(
array_map(
create_function('$k', "return '$groupName/'.\$k;"),
array_keys($result)
),
$result
);
var_export($resultKeyPrefixGroup);
输出:
array (
'braves/1' => 'One',
'braves/2' => 'Two',
)
由于自7.2.0版起不推荐使用create_function,因此我建议使用一种替代方法。
答案 1 :(得分:0)
您可以使用匿名函数:
<?php
$result =
[
'1' => 'One',
'2' => 'Two'
];
$prefix = 'pink/';
$prefix_key = function($str) use ($prefix) {
return $prefix . $str;
};
$prefixed = array_combine(
array_map($prefix_key, array_keys($result)),
$result
);
var_export($prefixed);
输出:
array (
'pink/1' => 'One',
'pink/2' => 'Two',
)
尽管循环和构建新数组可能也一样:
foreach($result as $k => $v)
$prefixed["pink/$k"] = $v;