这是我的阵列:
['apple']['some code']
['beta']['other code']
['cat']['other code 2 ']
如何更换所有" e"字母带"!"在密钥名称中并保留值 所以我会得到类似的东西
['appl!']['some code']
['b!ta']['other code']
['cat']['other code 2 ']
我发现了这个,但是因为我不能使用所有按键的名称,所以我无法使用它
$tags = array_map(function($tag) {
return array(
'name' => $tag['name'],
'value' => $tag['url']
);
}, $tags);
答案 0 :(得分:3)
我希望你的数组看起来像这样: -
Array
(
[apple] => some code
[beta] => other code
[cat] => other code 2
)
如果是,那么你可以这样做: -
$next_array = array();
foreach ($array as $key=>$val){
$next_array[str_replace('e','!',$key)] = $val;
}
echo "<pre/>";print_r($next_array);
输出: - https://eval.in/780144
答案 1 :(得分:2)
你实际上可以坚持使用array_map
。它不是很实用,但作为概念的证明,这可以这样做:
$array = array_combine(
array_map(function ($key) {
return str_replace('e', '!', $key);
}, array_keys($array)),
$array
);
我们使用array_keys
函数提取密钥并将其提供给array_map
。然后我们使用array_combine
将密钥放回原位。
这是working demo。
答案 2 :(得分:1)
我们正在使用array_walk
,在迭代过程中,我们将密钥中的e
替换为!
,并将密钥和值放入新数组中。
<?php
$firstArray = array('apple'=>'some code','beta'=>'other code','cat'=>'other code 2 ');
$result=array();
array_walk($firstArray, function($value,$key) use (&$result) {
$result[str_replace("e", "!", $key)]=$value;
});
print_r($result);
答案 3 :(得分:0)
如果你有这个:
$firstArray = array('apple'=>'some code','beta'=>'other code','cat'=>'other code 2 ');
你可以试试这个:
$keys = array_keys($firstArray);
$outputArray = array();
$length = count($firstArray);
for($i = 0; $i < $length; $i++)
{
$key = str_replace("e", "!", $keys[ $i ]);
$outputArray[ $key ] = $firstArray[$keys[$i]];
}
答案 4 :(得分:0)
我们可以迭代array
并标记要更改的所有有问题的密钥。检查值是否为字符串,如果是,请确保在需要时进行替换。如果它是array
而不是字符串,则以递归方式为内部function
调用array
。解决值后,请执行密钥替换并删除错误密钥。在您的情况下,"e"
传递$old
,"!"
传递$new
。 (另)
function replaceKeyValue(&$arr, $old, $new) {
$itemsToRemove = array();
$itemsToAdd = array();
foreach($arr as $key => $value) {
if (strpos($key, $old) !== false) {
$itemsToRemove[]=$key;
$itemsToAdd[]=str_replace($old,$new,$key);
}
if (is_string($value)) {
if (strpos($value, $old) !== false) {
$arr[$key] = str_replace($old, $new, $value);
}
} else if (is_array($value)) {
$arr[$key] = replaceKeyValue($arr[$key], $old, $new);
}
}
for ($index = 0; $index < count($itemsToRemove); $index++) {
$arr[$itemsToAdd[$index]] = $itemsToRemove[$index];
unset($arr[$itemsToRemove[$index]]);
}
return $arr;
}
答案 5 :(得分:0)
另一个仅使用两行代码的选项:
给出:
$array
(
[apple] => some code
[beta] => other code
[cat] => other code 2
)
执行:
$replacedKeys = str_replace('e', '!', array_keys($array));
return array_combine($replacedKeys, $array);
说明:
str_replace
可以采用一个数组并对每个条目执行替换。所以..
array_keys
将拉出键(https://www.php.net/manual/en/function.array-keys.php)str_replace
将执行替换(https://www.php.net/manual/en/function.str-replace.php)array_combine
将使用新更新的键中的键和原始数组(https://www.php.net/manual/en/function.array-combine.php)中的值来重建数组