我有一个具有多个值的数组对于相同键的数组
。
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
)
)
我想把它们转换成按照年龄使用Set::Combine在Cakephp.
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):
Hash::combine($array, '{n}.user', '{n}', '{n}.age') ;
你可以使用array_map
和array_values
来得到你想要的:
array_map('array_values', Hash::combine($array, '{n}.name', '{n}', '{n}.age'))
不要忘记添加use
语句:use 'Cake'Utility'Hash ;
编辑:看起来你正在使用CakePHP 2,上面应该工作,你只需要用Set
替换Hash
:
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
]
]
]