合并不同的阵列到查询结果一个阵列 [英] Merge distinct arrays into one array in query result
本文介绍了合并不同的阵列到查询结果一个阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是新手,PHP和codeIgniter。所以我有一个数据库查询结果是这样的:
结果=阵列(A =阵列(
[α] =>'1',
并[b] =>2,
);B =阵列(
[α] =>'1',
并[b] =>3,
);C =阵列(
[α] =>'1',
并[b] =>'4',
);**和更多...**);
那么,如何将它们合并成一个数组是这样的:
结果=阵列( Z =阵列( [α] =>'1',
并[b] =>阵列( [0] =>2,
[1] =>3,
[2] =>'4',
); );
谢谢你这么多...
解决方案
$ A =阵列('A'=>'1','B'=>'2' ,'C'=>'3');
$ B =阵列('一个'= GT;'1','B'= GT;'3','D'=>'4');
$ C =阵列('一个'= GT;'1','B'= GT;'4','C'=>'5');$结果=阵列($ A,$ B,$ C);
$ Z =阵列();
的foreach($结果为$设定){
的foreach($设置为$关键=> $ VAL){
如果(使用isset($ Z [$关键])){
如果(is_array($ Z [$关键])){
$ Z [$关键] [] = $ VAL;
} ELSEIF($ Z [$关键]!= $ VAL){
$ Z [$关键] =阵列($ Z [$键],$ VAL);
}
}其他{
$ Z [$关键] = $ VAL;
}
}
}的print_r($ Z);
输出
阵列
(
[α] => 1
并[b] =>排列
(
[0] => 2
[1] => 3
[2] => 4
) [C] =>排列
(
[0] => 3
[1] =>五
) 并[d] => 4
)
如果您想每个键唯一值,例如,如果你想避免 A
等于阵列(1,1,2)
,那么你可以这样做:
$ Z =阵列();
的foreach($结果为$设定){
的foreach($设置为$关键=> $ VAL){
如果(!使用isset($ Z [$关键])){
$ Z [$关键] =阵列();
}
$ Z [$关键] [] = $ VAL;
}
}的foreach($ Z而言为$ K => $ V){
$ newv = array_unique($ V);
如果(计数($ newv)== 1){
$ Z [$ K] = $ newv [0];
}其他{
$ Z [$ K] = $ newv;
}
}的print_r($ Z);
I'm newbie to PHP and CodeIgniter. So I have a database query result like this:
Result = array(
A = array(
[a]=>'1',
[b] =>'2',
);
B = array(
[a] =>'1',
[b] =>'3',
);
C = array(
[a] =>'1',
[b] =>'4',
);
**and more...**
);
So how can I merge them into one array like this:
Result = array(
Z = array(
[a] =>'1',
[b] => array(
[0] =>'2',
[1] =>'3',
[2] =>'4',
);
);
Thanks you so much...
解决方案
$A = array( 'a' => '1', 'b' => '2', 'c' => '3');
$B = array( 'a' => '1', 'b' => '3', 'd' => '4');
$C = array( 'a' => '1', 'b' => '4', 'c' => '5');
$Result = array($A, $B, $C);
$Z = array();
foreach ($Result as $set) {
foreach ($set as $key => $val) {
if (isset($Z[$key])) {
if (is_array($Z[$key])) {
$Z[$key][] = $val;
} elseif ($Z[$key] != $val) {
$Z[$key] = array($Z[$key], $val);
}
} else {
$Z[$key] = $val;
}
}
}
print_r($Z);
OUTPUT
Array
(
[a] => 1
[b] => Array
(
[0] => 2
[1] => 3
[2] => 4
)
[c] => Array
(
[0] => 3
[1] => 5
)
[d] => 4
)
If you want unique values per key, for instance if you want to avoid a
equalling array(1, 1, 2)
, then you can do this:
$Z = array();
foreach ($Result as $set) {
foreach ($set as $key => $val) {
if (!isset($Z[$key])) {
$Z[$key] = array();
}
$Z[$key][] = $val;
}
}
foreach($Z as $k => $v) {
$newv = array_unique($v);
if (count($newv) == 1) {
$Z[$k] = $newv[0];
} else {
$Z[$k] = $newv;
}
}
print_r($Z);
这篇关于合并不同的阵列到查询结果一个阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文