如何使用CakePHP中的Hash类转换此数组?

时间:2014-02-23 11:37:11

标签: php cakephp

我有这个数组:

array(
    (int) 0 => array(
        'region_id' => array(
            (int) 0 => '19'
            (int) 1 => '23'
        )
    )
)

我想转换它,在:

array(
    (int) 0 => array(
        'region_id' =>  '19'        
    ),
    (int) 1 => array(
        'region_id' =>  '23'        
    ),  
)

我读到cakephp中有一个魔法类(哈希)。

我可以用它来转换数组吗?还是我必须手动完成?

2 个答案:

答案 0 :(得分:1)

一个很好的起点是

$foo = array(
     0 => array(
                 'region_id' => array(
                     0 => 19,
                     1 => 23
                 )
             )
        );
debug(Hash::extract($foo, '{n}.region_id.{n}'));

返回

array(
    (int) 0 => (int) 19,
    (int) 1 => (int) 23
);

您的下一个工作是重命名数组键。

答案 1 :(得分:0)

这是您需要的结果,但是我使用了蛋糕哈希和手动PHP功能:

愿你这样:

    $result = Hash::extract($foo, '{n}.region_id.{n}');
    $result = array_chunk($result,1);
    $required_result = array();
    foreach($result as $k => $v){
    foreach($v as $k1 => $v1){
      $required_result[$k]['region_id'] = $v1; 
    }       
    }
    pr($required_result);exit;