2

我需要为数组中的每个键附加一个前缀。它在我正在使用的 create_function 之外定义的前缀。我怎样才能从内部访问它?

这是我的代码($result 是我的键 => 值数组):

$groupName = $reader->getAttribute('name');

$resultKeyPrefixGroup = array_combine(
                    array_map(create_function('$k', 'return $groupName."/".$k;'), array_keys($result)),
                    $result
                );

谢谢!

4

2 回答 2

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',
)

由于 create_function 自 7.2.0 起已弃用,我推荐我的一种替代方法。

于 2018-07-12T11:31:22.783 回答
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;
于 2018-07-12T11:14:30.067 回答