looping perangkingan

Ressa Cahyani · Jun 5, 2011
maaf mas ellyx, lagi lagi saya hanya bisa bertanya :)
begini mas, misalnya saya punya 4 variabel yang berisi nilai dinamis dari perhitungan yang telah dilakukan sebelumnya, misal : $a, $b, $c, $d.

dari keempat variabel tersebut saya ingin membuat perangkingan nya.
kalau ada 4 variabel berarti ada 24 peluang terjadinya perangkingan (diurut dari rangking 1 -> 4)
yaitu :
$a, $b, $c, $d
$a, $b, $d, $c
$a, $c, $b, $d
$a, $c, $d, $b
$a, $d, $b, $c
$a, $d, $c, $d

$b, $a, $c, $d
$b, $a, $d, $c
$b, $c, $a, $d
$b, $c, $d, $a
$b, $d, $a, $c
$b, $d, $c, $a

$c, $a, $b, $d
$c, $a, $d, $b
$c, $b, $a, $d
$c, $b, $d, $a
$c, $d, $a, $b
$c, $d, $b, $a

$d, $a, $b, $c
$d, $a, $c, $b
$d, $b, $a, $c
$d, $b, $c, $a
$d, $c, $a, $b
$d, $c, $b, $a

dari logika yang seperti itu mas, kira kira bisa dibuat looping menggunakan php gak atau ada solusi lain, saya benar2 buntu memikirnya loopingnya, mohon bantuannya ya mas.
Silahkan login untuk menjawab!
0
Loading...
Ellyx Christian · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
masukkan nilai nilai tersebut kedalam sebuah array, kemudian gunakan function sort dan tampilkan.
$urut = array($a, $b, $c, $d);
sort($urut); // melakukan pengurutan dari kecil ke besar, 
//sebaliknya gunakan function rsort
echo $urut[0];
echo $urut[1];
echo $urut[2];
echo $urut[3];
0
Loading...
Ressa Cahyani · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
oke mas. thanks
tapi ada satu kendala lagi nih mas, tadi saya mengatakan bahwa variabel $a, $b, $c, $d merupakan nilai dinamis dari perhitungan yang telah dilakukan sebelumnya.
Anggap saja $a=2 $b=4 $c=1 $d=3
lalu saya melakukan query terhadap tabel mhs
for ($id = 1; $id <= 4; $id++) {
        $select = "SELECT nama FROM mhs where id_mhs='$id'";
        $hasil = mysql_query($select) or die('Error');
        $data = mysql_fetch_row($hasil);
        $mhs[]=$data[0];
     }
dari query diatas anggap saja $mhs[1]=ani, $mhs[2]=budi, $mhs[3]=joe, $mhs[4]=sasa.
lalu nilai dari variabel :
$a milik ani
$b milik budi
$c milik joe
$d milik sasa

nah, hasil keluaran yang saya harapkan itu berupa perangkingan dari nilai tertinggi(berarti menggunakan rsort), misalnya saja spt ini:
rangking 1 adalah budi
rangking 2 adalah sasa
rangking 3 adalah ani
rangking 4 adalah joe

bagaimana dengan kasus yang satu ini mas, minta bantuannya lagi ya mas ellyx :'(
0
Loading...
Ellyx Christian · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
kamu bentuk saja array dengan nilai sebagai key dan nama siswa sebagai value:
$arr[$nilai] = $nama_siswa; dan kemudian gunakan function krsort
misal:
$urut = array($a => 'ani', $b => 'budi', $c => 'joe', $d => 'sasa');
krsort($urut);
$i = 1;
foreach($urut as $nilai => $nama){
	echo 'rangking '.$i.' '.$nama.'<br/>';
	$i++;
}
0
Loading...
Ressa Cahyani · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
gak bisa mas :'( , malah cuma nama sasa saja yang ditampilkan
$urut = array($a => 'ani', $b => 'budi', $c => 'joe', $d => 'sasa');
krsort($urut);
$i = 1;
foreach($urut as $nilai => $nama){
	echo 'rangking '.$i.' '.$nama.'<br/>';
	$i++;
}

diganti dengan
$urut = array($a => $mhs[1], $b => $mhs[2], $c => $mhs[3], $d => $mhs[4]);
krsort($urut);
$i = 1;
foreach($urut as $nilai => $nama){
	echo 'rangking '.$i.' '.$nama.'<br/>';
	$i++;
}

kenapa gak bisa ya mas?
kalau seperti $urut = array($a => 'ani', $b => 'budi', $c => 'joe', $d => 'sasa');
nanti jika ternyata nama yang terpilih bukan itu gmn mas?, karena data nama itu bersifat dinamis.
0
Loading...
Ellyx Christian · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
coba kamu ganti jadi sperti ini:
$urut = array($a => $mhs[1], $b => $mhs[2], $c => $mhs[3], $d => $mhs[4]);
var_dump($urut);
krsort($urut);
var_dump($urut);
$i = 1;
foreach($urut as $nilai => $nama){
	echo 'rangking '.$i.' '.$nama.'<br/>';
	$i++;
}
kasi tahu saya hasil dari var_dump-nya
0
Loading...
Ressa Cahyani · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
ini mas tampilannya :
array(1) { [0]=> NULL } array(1) { [0]=> NULL } rangking 1
0
Loading...
Ellyx Christian · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
sepertinya kamu salah pada saat pembentukan array:
$urut = array($a => $mhs[1], $b => $mhs[2], $c => $mhs[3], $d => $mhs[4]);
pastikan variabel $a,$b,$c,$d sudah dibentuk. Dan saya rasa ada sedikit masalah dengan cara ini,jika ada nilai yang sama, coba gunakan cara berikut:

jika
$a milik ani
$b milik budi
$c milik joe
$d milik sasa

maka bentuk dua array seperti ini:

$nilai = array($a,$b,$c,$d);
$mhs = array('ani','budi','joe','sasa');

key index untuk nilai dan nama mahasiswa di kedua array harus sama. Kemudian gunakan function array_multisort
$nilai = array($a,$b,$c,$d);
$mhs = array('ani','budi','joe','sasa'); //hasil ascending
array_multisort($nilai,$mhs);
$rangking = 1;
for($i = 3; $i >0; $i--){
	echo 'rangking '.$rangking.' '.$mhs[$i].'<br/>';
	$rangking ++;
}
0
Loading...
Ressa Cahyani · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
sudah tampil mas :) . tapi hanya ada 3 hasil perangkingan. apa karena looping ini mas?
for($i = 3; $i >0; $i--){
	echo 'rangking '.$rangking.' '.$mhs[$i].'<br/>';
	$rangking ++;
}
0
Loading...
Ellyx Christian · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
ubah jadi for($i = 3; $i >=0; $i--){
0
Loading...
Ressa Cahyani · Jun 5, 2011 · 0 Suka · 0 Tidak Suka
sudah berhasil mas, aku udah modif code nya.
makasih banyak mas ellyx :)