Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

cari nilai tertinggi dalam array

gw punya array begini:
Array
(
[0] => Array
(
[service_id] => 8
[discount] => 20.00
)
 
[1] => Array
(
[service_id] => 8
[discount] => 30.00
)
[2] => Array
(
[service_id] => 9
[discount] => 20.00
)
)


tujuan nya sih input value discount tertinggi ke array bila service_id nya sama,
ini untuk sementara masih masuk semua service_id nya ke array.
gw bisa cek pake fungsi in_array untuk cek service_id udah ada di dalam array atau belum,
tapi gimana cara cek discount tertinggi nya ya?

Tanggapan

  • gw punya array begini:
    Array
    (
    [0] => Array
    (
    [service_id] => 8
    [discount] => 20.00
    )
     
    [1] => Array
    (
    [service_id] => 8
    [discount] => 30.00
    )
    [2] => Array
    (
    [service_id] => 9
    [discount] => 20.00
    )
    )


    tujuan nya sih input value discount tertinggi ke array bila service_id nya sama,
    ini untuk sementara masih masuk semua service_id nya ke array.
    gw bisa cek pake fungsi in_array untuk cek service_id udah ada di dalam array atau belum,
    tapi gimana cara cek discount tertinggi nya ya?
    Klo mnrt ane sih, agan hrus dpetin service id yg lbh dr 1 dlu
  • maksudnya? ini array di dapat dari hasil looping query, service id di dapat dari hasil looping itu,
    pengennya sih untuk service id yang sama, dibandingkan discount nya, pilih yang paling tinggi,
    yang paling tinggi discount nya baru di masukkan service id nya,
    di post sebelumnya gw bilang itu array masih masuk semua untuk service id, nantinya mau di filter,
    gw bisa filter service id yang dah ada dengan fungsi in_array, jadi nanti service id yang dah ada gak masuk
    lagi ke array, cuma gw perlu memastikan service id yang mempunyai discount tertinggi yang dimasukkan ke array.
    Ada solusi lain selain pake if manual?
  • edited May 2013
    loop baca data hasil query nya kaya apa Dan ?

    kalo gak mau pake if di php, ya query nya pake GROUP BY service_id
  • service_id sama discount nya terikat, kalo gw GROUP BY querynya nanti dapetin discount tertinggi nya gimana?
  • edited May 2013
    SELECT service_id, MAX(discount) AS discount
    FROM table
    GROUP BY service_id



    kalo masih butuh angka discount yg lebih kecil ...

    SELECT service_id, GROUP_CONCAT(discount ORDER BY discount DESC) AS discount
    FROM table
    GROUP BY service_id

    tinggal di explode, yg pertama yg paling besar
  • dah bisa itu pake max, thanks  :D

    nambah lagi, kalo misalnya array yang di atas itu gw dapet dari 2 query yang berbeda, misal yang awal di dapat dari query promo_discount, terus gw gabungin sama query dari voucher_discount,
    array nya tetap sama seperti yang di atas. pertanyaannya tetap sama, ambil discount tertinggi dari service_id yang di dapat. apa tetap mesti di if ? 

    note: gw gak pake union di query, soalnya ini di dapat dari 2 fungsi berbeda, dipanggil dari 1 fungsi controller.
  • edited May 2013
    * gw benci framework * =))

    hedeh ...
    kalo dari fungsi pasti dapetnya sudah array ...

    <?php
    $row1=$row2=array();

    $row1[]=array('service_id' => 8, 'discount' => 20.00);
    $row1[]=array('service_id' => 8, 'discount' => 30.00);
    $row1[]=array('service_id' => 9, 'discount' => 20.00);
    print_r($row1);

    $row2[]=array('service_id' => 9, 'discount' => 15.00);
    $row2[]=array('service_id' => 7, 'discount' => 30.00);
    $row2[]=array('service_id' => 8, 'discount' => 20.00);
    print_r($row2);

    $row = array_merge($row1,$row2);
    print_r($row);

    rsort($row);
    print_r($row);
    ?>

    kagak usah di if buat cari diskon yg paling gede
    itu sudah urut descending diskon nya, yg pertama masuk sudah paling gede



    btw, napa kagak bikin fungsi baru aja, Dan ?
  • hmm, gw rada males bongkar fungsi nya, njilemet liat nya, rada berantakan *jadi gak mood :( 
    tapi nanti gw ngelempar ke client nya mesti 1 service id (unik) dan 1 discount.

    rada bete kalo dah buat terus mesti bongkar2 karena bisnis logic berubah :(
  • abis di rsort, loop array nya dong Dan ...

    cuma kagak perlu if utk memeriksa diskon
    cuma in_array() doang buat memeriksa service_id sudah ada atau belum

    yg pertama masuk sudah diskon yg paling gede utk service_id yg bersangkutan
  • oh iya, seep2  :-\"
  • edited May 2013
    cuma sebenernya gw kagak setuju cara kaya gini ...

    - 2 x query
    - otomatis 2 x loop
    - ada proses penggabungan array -> nambah penggunaan memori
    - ada proses sort
    - ada proses pencarian unik id

    bikin gw tambah benci framework =))

    bikin fungsi baru aja dah Dan ... proses nya lebih pendek
  • nanti kalo semua parameter dah lengkap baru gw satuin, btw ini gak ada hubungannya sama framework.
    di client ngelempar nya post nya kebanyakan, gw mesti urutin satu2 biar ga ada yang lewat, belum lagi mesti validasi ini itu.

    rencananya bikin multi promo/voucher. user bisa input sebanyak mungkin promo atau voucher, cek kalo ada discount di item yang di pesan, tapi di ujungnya, sistem nentuin kalo ada 2 promo/voucher di 1 item, maka pilih discount yang terbesar. masalahnya nanti di tiap promo sama voucher ada requirement masing2, entah itu mesti member atau all, entah itu ada maksimum total pembelian atau engga ada.

    btw promo sama voucher emang 2 table yang terpisah.
Sign In or Register to comment.