我有一个多维数组,如下所示。如何更改以“id of”开头的键?
Array
(
[0] => Array
(
[id of ten] => 1871
[name] => bob
)
[1] => Array
(
[id of nine hundred thousand] => 12581
[name] => barney
)
)
通常,你会做类似的事情:
foreach ( $array as $k=>$v )
{
$array[$k] ['id'] = $array[$k] ['old'];
unset($array[$k]['old']);
}
就我而言,键是动态变化的(我的多维数组中有数千个键,它们是随机的,但它们总是以“id ...”开头)
THX!
答案 0 :(得分:2)
我想知道这是否是你要找的:
<?php
$array = array(
array(
"id of one" => 434,
"name" => "bob"
),
array(
"id of two" => 9323,
"name" => "ted"
)
);
$c_array = count($array);
for ($i = 0; $i < $c_array; $i++)
{
foreach ($array[$i] as $key => $value)
{
if (substr($key, 0, 5) == 'id of') {
$array[$i][substr($key, 6)] = $value;
unset($array[$i][$key]);
}
}
}
print_r($array);
?>
注意:包括使用substr()
代替strpos()
。请参阅下面的Gumbo评论。
输出:
Array
(
[0] => Array
(
[name] => bob
[one] => 434
)
[1] => Array
(
[name] => ted
[two] => 9323
)
)
答案 1 :(得分:2)
这个解决方案很干净。 Array_shift同时做两件事:返回第一个元素(具有id),并从数组中删除它,这样你就可以直接将它分配给'id'的$ new_array
$new_arr=array();
foreach ( $array as $arr)
{
$new_arr[array_shift($arr)] = $arr;
}
答案 2 :(得分:1)
如果'id of'键始终是数组的第一个元素,则可以使用以下内容:
foreach ($input as &$value)
{
$value['key'] = reset($value);
$key = key($value);
unset($value[$key]);
}
否则,以下内容对我有用:
foreach ($input as &$value)
{
foreach ($value as $key=>$el) {
if (substr($key, 0, 5) == 'id of') {
$value['key'] = $el;
unset($value[$key]);
}
}
}
在这两种情况下,您都可以将$value['key']
更改为您想要新密钥的任何内容。