代码之家  ›  专栏  ›  技术社区  ›  pixeline

PHP多维数组操作:用其值之一替换索引

  •  0
  • pixeline  · 技术社区  · 14 年前

    我想通过使用多维数组的一个子键值作为索引来提高它的可读性。所以这个数组:

    array(
    [0]=>array('group_id'=>'2','group_name'=>'red','members'=>array()),
    [1]=>array('group_id'=>'3','group_name'=>'green','members'=>array()),
    [2]=>array('group_id'=>'4','group_name'=>'blue','members'=>array()), 
    );
    

    应该变成这样:

    array(
    [2]=>array('group_name'=>'red','members'=>array()),
    [3]=>array('group_name'=>'green','members'=>array()),
    [4]=>array('group_name'=>'blue','members'=>array()), 
    );
    

    当然,我可以循环并重建阵列,但我想知道专家会怎么做?

    1 回复  |  直到 14 年前
        1
  •  2
  •   maček    14 年前

    我将创建一个索引,使用引用指向原始数组中的行。尝试如下操作:

    $group_index = array();
    foreach($foo as &$v){
      $g = $v['group_id'];
      if(!array_key_exists($g, $group_index)){
        $group_index[$g] = array();
      }
      $group_index[$g][] = $v;
    }
    
    echo print_r($group_index[2], true);
    
    # Array
    # (
    #     [0] => Array
    #         (
    #             [group_id] => 2
    #             [group_name] => red
    #             [members] => Array
    #                 (
    #                 )
    # 
    #         )
    # 
    # )
    

    注: 索引将始终返回一个数组。如果您有多个相同的项目 group_id ,它们都将滚到结果中。