Show nonadjacent data
This post was last edited by lazygc520 on 2014-08-05 14:02:30
Known $arrs,
Array (
Array (
' Pono ' = ' a ',
' No ' = ' 4711 ',
),
Array (
' Pono ' = ' a ',
' No ' = ' 4714 ',
),
Array (
' Pono ' = ' B ',
' No ' = ' 4714 ',
),
Array (
' Pono ' = ' B ',
' No ' = ' 4715 ',
),
Array (
' Pono ' = ' C ',
' No ' = ' 4715 ',
),
Array (
' Pono ' = ' C ',
' No ' = ' 4716 ',
),
)
The data are now merged with Pono to:
$tmp =array ();
$data =array ();
$i = 0;
foreach ($arrs as $key = = $arr) {
if (!empty ($tmp) && array_key_exists ($arr [' Pono '], $tmp)) {
$key = $tmp [$arr [' Pono '];
$arr _no=explode (', ', $data [$key] [' no ']);
if (!in_array ($arr [' No '], $arr _no)) $data [$key] [' No '].= ', '. $arr [' no '];
}else{
$tmp [$arr [' Pono ']]= $i;
$data [$i ++]= $arr;
}
}
Print_r ($data);
Get results:
Array
(
[0] = = Array
(
[Pono] = a
[No] = 4711,4714
)
[1] = = Array
(
[Pono] = b
[No] = 4714,4715
)
[2] = = Array
(
[Pono] = C
[No] = 4715,4716
)
)
Now you want to show only nonadjacent no, such as the item in the example:
[0] = = Array
(
[Pono] = a
[No] = 4711,4714
)
How can I ask?
------Solution--------------------
$arrs = Array (
0 =
Array (
' Pono ' = ' a ',
' No ' = ' 4711 ',
),
1 =
Array (
' Pono ' = ' a ',
' No ' = ' 4714 ',
),
2 =
Array (
' Pono ' = ' B ',
' No ' = ' 4714 ',
),
3 =
Array (
' Pono ' = ' B ',
' No ' = ' 4715 ',
),
4 =
Array (
' Pono ' = ' C ',
' No ' = ' 4715 ',
),
5 =
Array (
' Pono ' = ' C ',
' No ' = ' 4716 ',
),
);
$tmp =array ();
$data =array ();
$i = 0;
foreach ($arrs as $key = = $arr) {
if (!empty ($tmp) && array_key_exists ($arr [' Pono '], $tmp)) {
$key = $tmp [$arr [' Pono '];
$arr _no=explode (', ', $data [$key] [' no ']);
if (!in_array ($arr [' No '], $arr _no)) $data [$key] [' No '].= ', '. $arr [' no '];
}else{
$tmp [$arr [' Pono ']]= $i;
$data [$i ++]= $arr;
}
}
Print_r ($data);
$result = Array ();
foreach ($data as $val) {
List ($a, $b) = Explode (', ', $val [' no ']);