2010-03-06 66 views
2

这是一组结果从我的数据库从子阵列

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

根据您如何查询结果,您可以对该数组进行更改,但是我们必须查看您的代码。 – 2010-03-06 14:27:15

回答

6

这不会做原地的,但是:

$new_plan = array(); 
foreach ($plan as $item) 
{ 
    $new_plan[$item['id']] = $item; 
} 
0
$plans = array(); 
foreach($plan as $item) 
{ 
    $plans[$item['id']] = $item; 
} 

$plans包含关联数组。

这只是一个简单的解决方案。

2

看到你用来组装$计划将是有益的代码,但我会认为它是这样的

while ($line = $RES->fetch_assoc()) { 
    $plan[] = $line; 
} 

,同时从数据库中提取数据,这样你可以简单地指定一个明确的价值:

while ($line = $RES->fetch_assoc()) { 
    $plan[$line['id']] = $line; 
} 

这是因为suming $ RES是数据库查询的结果集。

0
$newplan = array(); 
foreach($plan as $value) { 
    $id = $value["id"]; 
    unset($value["id"]); 
    $newplan[$id] = $value; 
} 
2

您也可以使用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; 
}); 

不过请注意,如果上面的段落并没有讲清楚,在这个问题概括这种做法矫枉过正您的个性化需求。然而,对于希望更多地使用阵列而不是简单地更改密钥的读者来说,这可能会证明是有用的。