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