mecari array "terbesar" dan "terbesar dengan nilai yang sama"

array $hasil saya seperti ini

 Array (
  [24] => 0.29883576167978
  [20] => 0.29883576167978
  [20,24] => 0.17930145700787
  [34] => 0.12390406380914
  [26,34] => 0.099123251047315
)

saya mencoba seperti ini

$newArray = array();
    $i = 0;
    foreach ($hasil as $key => $value) {
      $newArray[$i] = $key . '|' . $value;
      $i++;
    }

    for ($i = 0; $i < sizeof($newArray); $i++) {
      for ($j = 0; $j < sizeof($newArray) - 1; $j++) {
        $n1 = explode("|", $newArray[$j]);
        $n2 = explode("|", $newArray[$j+1]);

        if (doubleval($n1[1]) < doubleval($n2[1])) {
          $temp = $newArray[$j];
          $newArray[$j] = $newArray[$j + 1];
          $newArray[$j + 1] = $temp;
        }
      }
    }

    $idObjeks = array();
    $i = 0;
    foreach ($newArray as $key) {
      $ex1 = explode("|", $key);
      $ex2 = explode(",", $ex1[0]);
      foreach ($ex2 as $ky) {
        $idObjeks[$i] = $ky;
        $i++;
      }
    }

    $hasil = array();
    foreach ($newArray as $key) {
      $ex = explode("|", $key);
      $hasil[$ex[0]] = $ex[1];
    }

    // kayaknya ada yang salah di bagian sini
    // saya ingin menyimpan $hasil yang terbesar atau terbesar dengan hasil yang sama
    // ketika sata print_r hasilnya tidak yang terbesar dengan hasil yang sama
    $sameValue = array();
    for ($i = 0; $i < sizeof($hasil) - 1; $i++) {
      if (current($hasil) == next($hasil)) {
        $sameValue[$i]['key'] = key($hasil);
        $sameValue[$i]['value'] = current($hasil);
        $sameValue[$i+1]['key'] = key($hasil);
        $sameValue[$i+1]['value'] = next($hasil);
      } else {
        prev($hasil);
        $sameValue[$i]['key'] = key($hasil);
        $sameValue[$i]['value'] = current($hasil);
        break;
      }
    }

apakah ada yang bisa membantu? atau ada cara lain untuk mencari array "terbesar" dan "terbesar dengan nilai yang sama"? terima kasih.

avatar mading
@mading

11 Kontribusi 4 Poin

Diperbarui 7 tahun yang lalu

3 Jawaban:

Masih belum paham hehe, ada gambarannya ga, array sebelum dan array hasilnya pengen kaya gmna?

avatar gunalirezqimauludi
@gunalirezqimauludi

350 Kontribusi 243 Poin

Dipost 7 tahun yang lalu

array sebelumnya

Array (
  [24] => 0.29883576167978
  [20] => 0.29883576167978
  [20,24] => 0.17930145700787
  [34] => 0.12390406380914
  [26,34] => 0.099123251047315
)

kemudian pengen array nya jadi seperti ini.

Array (
  [24] => 0.29883576167978
  [20] => 0.29883576167978
)

intinya mau menyimpan array dengan nilai terbesar saja.

avatar mading
@mading

11 Kontribusi 4 Poin

Dipost 7 tahun yang lalu

akhirnya bisa pakai cara seperti ini

array_intersect_key($hasil, array_flip(array_keys($hasil, max($hasil))));

avatar mading
@mading

11 Kontribusi 4 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban