我正在使用一组数据,我已经更改了一些数组键的名称,但我希望数据基本保持不变...基本上我希望能够保留数据中的数据存储在数据库中的数组,但我想更新与之关联的数组键名。
以前,数组看起来像这样:$var_opts['services'] = array('foo-1', 'foo-2', 'foo-3', 'foo-4');
现在数组键不再以“foo”为前缀,而是以“bar”为前缀。那么如何更新数组变量以摆脱“foos”并替换为“bars”呢?
像这样:$var_opts['services'] = array('bar-1', 'bar-2', 'bar-3', 'bar-4');
我已经在使用if(isset($var_opts['services']['foo-1'])) { unset($var_opts['services']['foo-1']); }
来消除这些因素......我只需要弄清楚如何用条形替换每个foo。
我以为我会在整个数组上使用str_replace,但令我沮丧的是它只适用于字符串(go figure,heh)而不是数组。
答案 0 :(得分:1)
这个想法:
代码:
$keys = array_keys($arr);
$values = array_values($arr);
$new_keys = str_replace('foo', 'bar', $keys);
$arr = array_combine($new_keys, $values);
这实际上做的是创建一个新数组,它与原始数组具有相同的值,但其中的键已被更改。
修改:根据卡米尔的评论更新。
答案 1 :(得分:0)
对于您提供的值 $ var_opts ['services'] = array('foo-1','foo-2','foo-3','foo-4');
var_dump($var_opts['services']);
foreach($var_opts['services'] as &$val) {
$val = str_replace('foo', 'bar', $val);
}
unset($val);
var_dump($var_opts['services']);
或者如果您想更改实际的密钥
$var_opts['services'] = array('foo-1' => 1, 'foo-2' => 2, 'foo-3' => 3, 'foo-4' => 4);
var_dump($var_opts['services']);
foreach($var_opts['services'] as $i => $val) {
unset($var_opts['services'][$i]);
$i = str_replace('foo', 'bar', $i);
$var_opts['services'][$i] = $val;
}
var_dump($var_opts['services']);