集合::组合Cakephp,使用一维数组创建多维数组

集合::组合Cakephp,使用一维数组创建多维数组,php,arrays,cakephp,Php,Arrays,Cakephp,我有一个数组,对于相同键的数组,相同值有多个值 例如 我想使用Cakephp中的Set::Combine将它们转换为如下所示的年龄 Array( [20] => Array( [0] => Array( 'name' => "Bob", 'age' => 20,

我有一个数组,对于相同键的数组,相同值有多个值

例如

我想使用Cakephp中的Set::Combine将它们转换为如下所示的年龄

Array(
   [20] => Array(
                 [0] => Array(
                             'name' => "Bob",
                             'age'  => 20,
                             'marks'=> 50
                             )
                 [1] => Array(
                             'name' => "Ryan",
                             'age'  => 20,
                             'marks'=> 57
                             )
                )
   [23] => Array(
                 [0] => Array(
                             'name' => "Allen",
                             'age'  => 23,
                             'marks'=> 70
                             )
                 [1] => Array(
                             'name' => "Duke",
                             'age'  => 23,
                             'marks'=> 67
                             )
                )
   [24] => Array(
                 [0] => Array(
                             'name' => "Matt",
                             'age'  => 24,
                             'marks'=> 85
                             )
                )

 )

对于特定的年龄,我只能获得一个内容。

如果我正确理解了您的问题,您可以使用此功能(使用CakePHP 3测试)获得几乎您想要的内容:

然后,您可以使用
array\u映射
array\u值
精确地获取所需内容:

array_map('array_values', Hash::combine($array, '{n}.name', '{n}', '{n}.age'))
不要忘记添加以下
use
语句:
use\Cake\Utility\Hash

编辑:看起来您使用的是CakePHP 2,上面的操作应该可以,您只需将
散列
替换为

array_map('array_values', Set::combine($array, '{n}.name', '{n}', '{n}.age'))
例如:

$array = array(
    0 => array(
        'name' => "Bob",
        'age'  => 20,
        'marks'=> 50
    ),
    1 => array(
        'name' => "Ryan",
        'age'  => 20,
        'marks'=> 57
    ),
    2 => array(
        'name' => "Allen",
        'age'  => 23,
        'marks'=> 70
    ),
    3 => array(
        'name' => "Duke",
        'age'  => 23,
        'marks'=> 67
    ),
    4 => array(
        'name' => "Matt",
        'age'  => 24,
        'marks'=> 85
    )
) ;
debug($array);
debug(\Cake\Utility\Hash::combine($array, '{n}.user', '{n}', '{n}.age'));
debug(array_map('array_values', \Cake\Utility\Hash::combine($array, '{n}.name', '{n}', '{n}.age')));
输出:

\src\Controller\PagesController.php (line 61) 

[
    (int) 0 => [
        'name' => 'Bob',
        'age' => (int) 20,
        'marks' => (int) 50
    ],
    (int) 1 => [
        'name' => 'Ryan',
        'age' => (int) 20,
        'marks' => (int) 57
    ],
    (int) 2 => [
        'name' => 'Allen',
        'age' => (int) 23,
        'marks' => (int) 70
    ],
    (int) 3 => [
        'name' => 'Duke',
        'age' => (int) 23,
        'marks' => (int) 67
    ],
    (int) 4 => [
        'name' => 'Matt',
        'age' => (int) 24,
        'marks' => (int) 85
    ]
]


\src\Controller\PagesController.php (line 62) 

[
    (int) 20 => [
        'Bob' => [
            'name' => 'Bob',
            'age' => (int) 20,
            'marks' => (int) 50
        ],
        'Ryan' => [
            'name' => 'Ryan',
            'age' => (int) 20,
            'marks' => (int) 57
        ]
    ],
    (int) 23 => [
        'Allen' => [
            'name' => 'Allen',
            'age' => (int) 23,
            'marks' => (int) 70
        ],
        'Duke' => [
            'name' => 'Duke',
            'age' => (int) 23,
            'marks' => (int) 67
        ]
    ],
    (int) 24 => [
        'Matt' => [
            'name' => 'Matt',
            'age' => (int) 24,
            'marks' => (int) 85
        ]
    ]
]

\src\Controller\PagesController.php (line 63)

[
    (int) 20 => [
        (int) 0 => [
            'name' => 'Bob',
            'age' => (int) 20,
            'marks' => (int) 50
        ],
        (int) 1 => [
            'name' => 'Ryan',
            'age' => (int) 20,
            'marks' => (int) 57
        ]
    ],
    (int) 23 => [
        (int) 0 => [
            'name' => 'Allen',
            'age' => (int) 23,
            'marks' => (int) 70
        ],
        (int) 1 => [
            'name' => 'Duke',
            'age' => (int) 23,
            'marks' => (int) 67
        ]
    ],
    (int) 24 => [
        (int) 0 => [
            'name' => 'Matt',
            'age' => (int) 24,
            'marks' => (int) 85
        ]
    ]
]

感谢您添加详细的解决方案。
$array = array(
    0 => array(
        'name' => "Bob",
        'age'  => 20,
        'marks'=> 50
    ),
    1 => array(
        'name' => "Ryan",
        'age'  => 20,
        'marks'=> 57
    ),
    2 => array(
        'name' => "Allen",
        'age'  => 23,
        'marks'=> 70
    ),
    3 => array(
        'name' => "Duke",
        'age'  => 23,
        'marks'=> 67
    ),
    4 => array(
        'name' => "Matt",
        'age'  => 24,
        'marks'=> 85
    )
) ;
debug($array);
debug(\Cake\Utility\Hash::combine($array, '{n}.user', '{n}', '{n}.age'));
debug(array_map('array_values', \Cake\Utility\Hash::combine($array, '{n}.name', '{n}', '{n}.age')));
\src\Controller\PagesController.php (line 61) 

[
    (int) 0 => [
        'name' => 'Bob',
        'age' => (int) 20,
        'marks' => (int) 50
    ],
    (int) 1 => [
        'name' => 'Ryan',
        'age' => (int) 20,
        'marks' => (int) 57
    ],
    (int) 2 => [
        'name' => 'Allen',
        'age' => (int) 23,
        'marks' => (int) 70
    ],
    (int) 3 => [
        'name' => 'Duke',
        'age' => (int) 23,
        'marks' => (int) 67
    ],
    (int) 4 => [
        'name' => 'Matt',
        'age' => (int) 24,
        'marks' => (int) 85
    ]
]


\src\Controller\PagesController.php (line 62) 

[
    (int) 20 => [
        'Bob' => [
            'name' => 'Bob',
            'age' => (int) 20,
            'marks' => (int) 50
        ],
        'Ryan' => [
            'name' => 'Ryan',
            'age' => (int) 20,
            'marks' => (int) 57
        ]
    ],
    (int) 23 => [
        'Allen' => [
            'name' => 'Allen',
            'age' => (int) 23,
            'marks' => (int) 70
        ],
        'Duke' => [
            'name' => 'Duke',
            'age' => (int) 23,
            'marks' => (int) 67
        ]
    ],
    (int) 24 => [
        'Matt' => [
            'name' => 'Matt',
            'age' => (int) 24,
            'marks' => (int) 85
        ]
    ]
]

\src\Controller\PagesController.php (line 63)

[
    (int) 20 => [
        (int) 0 => [
            'name' => 'Bob',
            'age' => (int) 20,
            'marks' => (int) 50
        ],
        (int) 1 => [
            'name' => 'Ryan',
            'age' => (int) 20,
            'marks' => (int) 57
        ]
    ],
    (int) 23 => [
        (int) 0 => [
            'name' => 'Allen',
            'age' => (int) 23,
            'marks' => (int) 70
        ],
        (int) 1 => [
            'name' => 'Duke',
            'age' => (int) 23,
            'marks' => (int) 67
        ]
    ],
    (int) 24 => [
        (int) 0 => [
            'name' => 'Matt',
            'age' => (int) 24,
            'marks' => (int) 85
        ]
    ]
]