Array vergelijking
Ik ben bezig met een nieuw project dat ik grotendeels zelf script.
Ik ben bezig met een radiostatus vergelijker.
Ik maak daarvoor gebruik van arrays en array_sort.
Maar de arrays komen er mee uit.
Ik krijg dit:
Quote:
Array ( [12346] => Array ( [id] => 2 [first_name] => Radio1 [listeners] => 32 [kbps] => 128 [DJ] => it's DJ Massey ) [12345] => Array ( [id] => 1 [first_name] => Radio2 [listeners] => 130 [kbps] => 192 [DJ] => AutoDJ ) )
Ik zou het liever zonder die arrays willen, maar ik weet niet hoe ik dat zou kunnen oplossen.
Het script:
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
function array_sort($array, $on, $order=SORT_ASC)
{
$new_array = array();
$sortable_array = array();
if (count($array) > 0) {
foreach ($array as $k => $v) {
if (is_array($v)) {
foreach ($v as $k2 => $v2) {
if ($k2 == $on) {
$sortable_array[$k] = $v2;
}
}
} else {
$sortable_array[$k] = $v;
}
}
switch ($order) {
case SORT_ASC:
asort($sortable_array);
break;
case SORT_DESC:
arsort($sortable_array);
break;
}
foreach ($sortable_array as $k => $v) {
$new_array[$k] = $array[$k];
}
}
return $new_array;
}
$status = array(
12345 => array(
'id' => 1,
'first_name' => 'Radio1',
'listeners' => "$listeners1",
'kbps' => "$kbps1",
'DJ' => "$stream_aim1"
),
12346 => array(
'id' => 2,
'first_name' => 'Radio2',
'listeners' => "$listeners2",
'kbps' => "$kbps2",
'DJ' => "$stream_title2"
),
);
print_r(array_sort($status, 'listeners', SORT_DESC));
?>
function array_sort($array, $on, $order=SORT_ASC)
{
$new_array = array();
$sortable_array = array();
if (count($array) > 0) {
foreach ($array as $k => $v) {
if (is_array($v)) {
foreach ($v as $k2 => $v2) {
if ($k2 == $on) {
$sortable_array[$k] = $v2;
}
}
} else {
$sortable_array[$k] = $v;
}
}
switch ($order) {
case SORT_ASC:
asort($sortable_array);
break;
case SORT_DESC:
arsort($sortable_array);
break;
}
foreach ($sortable_array as $k => $v) {
$new_array[$k] = $array[$k];
}
}
return $new_array;
}
$status = array(
12345 => array(
'id' => 1,
'first_name' => 'Radio1',
'listeners' => "$listeners1",
'kbps' => "$kbps1",
'DJ' => "$stream_aim1"
),
12346 => array(
'id' => 2,
'first_name' => 'Radio2',
'listeners' => "$listeners2",
'kbps' => "$kbps2",
'DJ' => "$stream_title2"
),
);
print_r(array_sort($status, 'listeners', SORT_DESC));
?>
Dit script heb ik van php.net en zelf aangepast.
Zou iemand me kunnen helpen.
Alvast bedankt,
Bart
Gewijzigd op 05/04/2012 13:49:38 door Bart van den Hout
komt omdat je met print_r weergeeft vervang dit is door echo of door print
Als je alleen de keys en de waardes van een array wilt echoen dan kan je dat het handigst in een foreach loop doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$status = array(
12345 => array(
'id' => 1,
'first_name' => 'Radio1',
'listeners' => "$listeners1",
'kbps' => "$kbps1",
'DJ' => "$stream_aim1"
),
12346 => array(
'id' => 2,
'first_name' => 'Radio2',
'listeners' => "$listeners2",
'kbps' => "$kbps2",
'DJ' => "$stream_title2"
)
);
foreach( $status as $index => $st ){
echo 'gegevens voor '.$index.':<br>';
foreach( $st as $key => $value ){
echo $key.':'.$value.'<br>';
}
}
?>
$status = array(
12345 => array(
'id' => 1,
'first_name' => 'Radio1',
'listeners' => "$listeners1",
'kbps' => "$kbps1",
'DJ' => "$stream_aim1"
),
12346 => array(
'id' => 2,
'first_name' => 'Radio2',
'listeners' => "$listeners2",
'kbps' => "$kbps2",
'DJ' => "$stream_title2"
)
);
foreach( $status as $index => $st ){
echo 'gegevens voor '.$index.':<br>';
foreach( $st as $key => $value ){
echo $key.':'.$value.'<br>';
}
}
?>
Voor meer info: foreach
Doet dan zie je gewoon je array. Dat wil je toch niet?
Erwin H op 05/04/2012 14:24:05:
Iets meer info zou dan wel handig zijn reshadd, want een echo op een array dan krijg je niet veel natuurlijk...
Als je alleen de keys en de waardes van een array wilt echoen dan kan je dat het handigst in een foreach loop doen:
Voor meer info: foreach
Als je alleen de keys en de waardes van een array wilt echoen dan kan je dat het handigst in een foreach loop doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$status = array(
12345 => array(
'id' => 1,
'first_name' => 'Radio1',
'listeners' => "$listeners1",
'kbps' => "$kbps1",
'DJ' => "$stream_aim1"
),
12346 => array(
'id' => 2,
'first_name' => 'Radio2',
'listeners' => "$listeners2",
'kbps' => "$kbps2",
'DJ' => "$stream_title2"
)
);
foreach( $status as $index => $st ){
echo 'gegevens voor '.$index.':<br>';
foreach( $st as $key => $value ){
echo $key.':'.$value.'<br>';
}
}
?>
$status = array(
12345 => array(
'id' => 1,
'first_name' => 'Radio1',
'listeners' => "$listeners1",
'kbps' => "$kbps1",
'DJ' => "$stream_aim1"
),
12346 => array(
'id' => 2,
'first_name' => 'Radio2',
'listeners' => "$listeners2",
'kbps' => "$kbps2",
'DJ' => "$stream_title2"
)
);
foreach( $status as $index => $st ){
echo 'gegevens voor '.$index.':<br>';
foreach( $st as $key => $value ){
echo $key.':'.$value.'<br>';
}
}
?>
Voor meer info: foreach
Heel erg bedankt,
Dit heeft me verder geholpen.
Maar ik krijg hem nu niet meer gesorteerd.
Gewijzigd op 05/04/2012 17:13:34 door Bart van den Hout
En als je gewoon die array_sort functie aanroept ook niet....?
Erwin H op 05/04/2012 17:20:11:
En als je gewoon die array_sort functie aanroept ook niet....?
Ik ben wat dingen aan het proberen maar ik krijg steeds error.
Dit was mijn laatste poging en denk ook de beste.
Quote:
sort($status, 'Luisteraars');
foreach( $status as $index => $st ){
echo ''.$index.':<br>';
foreach( $st as $key => $value ){
echo $key.' : '.$value.'<br>';
foreach( $status as $index => $st ){
echo ''.$index.':<br>';
foreach( $st as $key => $value ){
echo $key.' : '.$value.'<br>';
Het is opgelost.