如何在cakephp2中将数组中的数据与Set::combine合并?
How to merge data in arrays with Set::combine in cakephp2?
我试图用下面的代码合并数组'c'和'a'里面的数据MyData
,但是最近发现有一个函数叫做Set::combine.我如何在 CakePHP 2 中使用 combine 方法?我搜索了教程,但找不到真正可以帮助我解决问题的像样的教程。一些例子或提示会很棒!
我想在 [MyData]
中合并 [my_test]
和 [my_date]
与 Set::combine。
Array
(
[0] => Array
(
[MyData] => Array
(
[id] => 79
[my_birth_day] => 1990-06-20
[my_address] => 400
[my_age] => 26
[my_name] => Joy
[my_id] => 1
[created] => 2017-06-19 15:39:44
)
[c] => Array
(
[my_test] => math
)
[a] => Array
(
[my_date] => 2017-08-13
)
).....Loops
[1] => Array
(
我希望结果是这样的:
Array
(
[0] => Array
(
[MyData] => Array
(
[id] => 79
[my_birth_day] => 1990-06-20
[my_address] => 400
[my_age] => 26
[my_name] => Joy
[my_id] => 1
[created] => 2017-06-19 15:39:44
[my_test] => math
[my_date] => 2017-08-13
我写了这段代码来合并数组并将其显示为上面的代码,但我想使用 Set::combine $res.
$res = $this->find( 'all', $cond); // All the data are fetchd from this $res
$count = count($res);
for($i=0;$i<$count;$i++){
$result[] = $res[$i] ;
$fixed_arrays[] = $result[$i]['MyData'];
if (!empty($result[$i]['c'])) {
$corrupt_c_array = $result[$i]['c'];
$fixed_arrays = array_merge($fixed_arrays,$corrupt_c_array);
}
if(!empty($result[$i]['a'])) {
$corrupt_a_array = $result[$i]['a'];
$fixed_arrays = array_merge($fixed_arrays, $corrupt_a_array);
}
}
$result['data'] = $fixed_arrays; // This $result['data'] should show the expected result.
$result = Set::combine('', '{n}.MyData', '{n}.c', '{n}.a');
希望对你有用。
您无法使用 Set::combine(或 CakePHP 的更高版本中的 Hash::combine)执行您要求的操作。它只是行不通。但是,您可以使用以下方法简化当前正在做的事情:
foreach($yourArray as $key => $data){
$yourArray[$key] = $data['MyData'] + $data['c'] + $data['a'];
}
这将输出您要查找的内容。
Array (
[0] => Array (
[MyData] => Array (
[id] => 79
[my_birth_day] => 1990-06-20
[my_address] => 400
[my_age] => 26
[my_name] => Joy
[my_id] => 1
[created] => 2017-06-19 15:39:44
[my_test] => math
[my_date] => 2017-08-13
)
)
)
我试图用下面的代码合并数组'c'和'a'里面的数据MyData
,但是最近发现有一个函数叫做Set::combine.我如何在 CakePHP 2 中使用 combine 方法?我搜索了教程,但找不到真正可以帮助我解决问题的像样的教程。一些例子或提示会很棒!
我想在 [MyData]
中合并 [my_test]
和 [my_date]
与 Set::combine。
Array
(
[0] => Array
(
[MyData] => Array
(
[id] => 79
[my_birth_day] => 1990-06-20
[my_address] => 400
[my_age] => 26
[my_name] => Joy
[my_id] => 1
[created] => 2017-06-19 15:39:44
)
[c] => Array
(
[my_test] => math
)
[a] => Array
(
[my_date] => 2017-08-13
)
).....Loops
[1] => Array
(
我希望结果是这样的:
Array
(
[0] => Array
(
[MyData] => Array
(
[id] => 79
[my_birth_day] => 1990-06-20
[my_address] => 400
[my_age] => 26
[my_name] => Joy
[my_id] => 1
[created] => 2017-06-19 15:39:44
[my_test] => math
[my_date] => 2017-08-13
我写了这段代码来合并数组并将其显示为上面的代码,但我想使用 Set::combine $res.
$res = $this->find( 'all', $cond); // All the data are fetchd from this $res
$count = count($res);
for($i=0;$i<$count;$i++){
$result[] = $res[$i] ;
$fixed_arrays[] = $result[$i]['MyData'];
if (!empty($result[$i]['c'])) {
$corrupt_c_array = $result[$i]['c'];
$fixed_arrays = array_merge($fixed_arrays,$corrupt_c_array);
}
if(!empty($result[$i]['a'])) {
$corrupt_a_array = $result[$i]['a'];
$fixed_arrays = array_merge($fixed_arrays, $corrupt_a_array);
}
}
$result['data'] = $fixed_arrays; // This $result['data'] should show the expected result.
$result = Set::combine('', '{n}.MyData', '{n}.c', '{n}.a');
希望对你有用。
您无法使用 Set::combine(或 CakePHP 的更高版本中的 Hash::combine)执行您要求的操作。它只是行不通。但是,您可以使用以下方法简化当前正在做的事情:
foreach($yourArray as $key => $data){
$yourArray[$key] = $data['MyData'] + $data['c'] + $data['a'];
}
这将输出您要查找的内容。
Array (
[0] => Array (
[MyData] => Array (
[id] => 79
[my_birth_day] => 1990-06-20
[my_address] => 400
[my_age] => 26
[my_name] => Joy
[my_id] => 1
[created] => 2017-06-19 15:39:44
[my_test] => math
[my_date] => 2017-08-13
)
)
)