1. Halo Guest, pastikan Anda selalu menaati peraturan forum sebelum mengirimkan post atau thread baru.

[ASK] Cara Membuat Multi Array Dengan Hasil Random

Discussion in 'Pemrograman Web' started by adsmax, Dec 1, 2018.

  1. adsmax

    adsmax AdSense Pro

    Joined:
    Jun 17, 2010
    Messages:
    255
    Likes Received:
    55
    Location:
    Kamar Mandi
    Code:
    <?php
    $placeholders = 'Kota1 - Kota1 - Kota1 - Kota2 - Kota3 - Kota4 - Kota4';
    $substitutes  = [
    'Kota1' => ['Jakarta','Bogor','Tangerang','Depok','Bekasi'],
    'Kota2' => ['Medan','Padang','Riau','Pekanbaru','Banda Aceh','Jambi'],
    'Kota3' => ['Bandung','Surabaya','Magelang','Malang'],
    'Kota4' => ['Makassar','Palu','Manado','Gorontalo'],
    ];
    $replacements = [];
    foreach($substitutes as $key => $choices) {
        $random_key = array_rand($choices);
        $replacements[$key] = $choices[$random_key];
    }
    $spun = str_replace(
        array_keys($replacements),
        array_values($replacements),
        $placeholders
    );
    echo $spun;
    ?>

    Hasil dari kode diatas :
    Peryanyaannya, Bagaimana jika ingin menampilkannya acak seperti ini:
    Mohon bantuannya...
    Terima kasih
     
  2. punxs

    punxs musuhnya google

    Joined:
    Dec 9, 2010
    Messages:
    443
    Likes Received:
    47
    Location:
    Di Depan Mu
    sistem replace mu salah mas, karena str_replace akan langsung merubah semua kata yang sama, jadi pasti sama kalau kata awal yg di replace sama
    PHP:
    $explode explode('-',$placeholders);
    $replacements = array();
    foreach(
    $explode as $key=>$val){
        
    $kota trim($val);
        
    $sub $substitutes[$kota];
        
    shuffle($sub);
        
    $replacements[] = $sub[0];
    }
    $spun implode(' - ',$replacements);
    echo 
    $spun;
    di atas masih ada kemungkinan duplicate, kalau tidak ingin duplicate harus di check ulang value yang ada di replacements
    PHP:
    $explode explode('-',$placeholders);
    $replacements = array();
    foreach(
    $explode as $key=>$val){
        
    $nokota trim($val);
        
    $sub $substitutes[$nokota];
        
    shuffle($sub);
        
    $k 0;
        
    $kota $sub[$k];
        while(
    in_array($kota,$replacements)){
            
    $k++;
            if(!isset(
    $sub[$k])) break;
            
    $kota $sub[$k];
        }
        
    $replacements[] = $kota;
    }
    $spun implode(' - ',$replacements);
    echo 
    $spun;
     
    Puerwanto, elm43l and adsmax like this.
  3. adsmax

    adsmax AdSense Pro

    Joined:
    Jun 17, 2010
    Messages:
    255
    Likes Received:
    55
    Location:
    Kamar Mandi
    Terima kasih sudah dijawab... Tp kode diatas untuk kondisi "Kota1 - Kota1 - Kota1 - Kota2 - Kota3 - Kota4 - Kota4"
    Bagaimana jika textnya tanpa dash "-" ?
     
  4. punxs

    punxs musuhnya google

    Joined:
    Dec 9, 2010
    Messages:
    443
    Likes Received:
    47
    Location:
    Di Depan Mu
    pelajari explode dan implode, atau kalau mau lebih ruwet lagi preg_replace_callback
     
    elm43l and adsmax like this.
  5. adsmax

    adsmax AdSense Pro

    Joined:
    Jun 17, 2010
    Messages:
    255
    Likes Received:
    55
    Location:
    Kamar Mandi
    Siap.. terima kasih....
    Sy coba cari refrensi dulu.. :manja:
     

Share This Page