这是我的数据库
的结果集print_r($plan);
Array
(
[0] => Array
(
[id] => 2
[subscr_unit] => D
[subscr_period] =>
[subscr_fee] =>
)
[1] => Array
(
[id] => 3
[subscr_unit] => M,Y
[subscr_period] => 1,1
[subscr_fee] => 90,1000
)
[2] => Array
(
[id] => 32
[subscr_unit] => M,Y
[subscr_period] => 1,1
[subscr_fee] => 150,1500
)
)
如何将$plan[0]
更改为$plan[value_of_id]
谢谢。
答案 0 :(得分:6)
这不会就地执行,但是:
$new_plan = array();
foreach ($plan as $item)
{
$new_plan[$item['id']] = $item;
}
答案 1 :(得分:3)
您还可以使用array_reduce
,这通常用于减少数组。也就是说它可以用来实现你想要的数组格式,只需返回与输入数组相同的项目,但需要使用所需的键。
// Note: Uses anonymous function syntax only available as of PHP 5.3.0
// Could use create_function() or callback to a named function
$plan = array_reduce($plan, function($reduced, $current) {
$reduced[$current['id']] = $current;
return $reduced;
});
但请注意,如果上述段落没有明确说明,则此方法对于您在问题中概述的个人要求而言过于苛刻。然而,对于那些希望使用数组做更多事情而不仅仅是更改密钥的读者来说,这可能是有用的。
答案 2 :(得分:2)
看到你用来组装$ plan的代码会有所帮助,但我会假设它是这样的
while ($line = $RES->fetch_assoc()) {
$plan[] = $line;
}
您可以在从数据库中提取数据时分配显式值,如下所示:
while ($line = $RES->fetch_assoc()) {
$plan[$line['id']] = $line;
}
这假设$ RES是数据库查询的结果集。
答案 3 :(得分:0)
$plans = array();
foreach($plan as $item)
{
$plans[$item['id']] = $item;
}
$plans
包含关联数组。
这只是一个简单的解决方案。
答案 4 :(得分:0)
$newplan = array();
foreach($plan as $value) {
$id = $value["id"];
unset($value["id"]);
$newplan[$id] = $value;
}
答案 5 :(得分:0)
这可能有点晚了,但是我一直在寻找解决同一问题的方法。但是由于所有其他答案都涉及循环,而且恕我直言太复杂了,所以我一直在自己尝试一些东西。
root, dirs, files = next(os.walk(my_dir, topdown=True))
files = [ os.path.join(root, f) for f in files ]
print(files)
就这么简单。
答案 6 :(得分:0)
在我看来,没有比使用array_column()
第二个参数的null
更简单或更富有表现力的技术了。 null
参数通知函数保留每个子数组中的所有元素,新的第一级键从array_column()
的第三参数中指定的列中派生。
代码:(Demo)
$plan = array_column($plan, null, 'id');
注意:此技术也通常用于确保所有子数组在父数组中都包含唯一值。发生这种情况是因为数组可能不包含相同级别的重复键。因此,如果在使用array_column()
时出现重复值,则先前的子数组将被以后每次出现的相同值覆盖,以用作新键。