Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592

    confrontare valori array e sommare

    io creo un array così:
    codice:
      $array_doppie[] = $row["ord_id_appesi"];
    e con questo
    codice:
    in_array($row["ord_id"], $array_doppie)
    vedo se qualche id appeso è uguale all'id, e faccio delle operazioni.
    Tutto questo all'interno dello stesso ciclo, quindi piano piano l'array_doppie si popola e controllo se ci sono valori uguali sulla colonna degli id, e gli aggiungo un valore X.
    avrei però bisogno di una cosa più complessa, cioè questo:
    nel mio $array_doppie dovrei avere un altro valore preso dal DB che è $row["ord_varianza"]. (quindi un array con 2 "variabili", e già qua mi incarto )
    quando faccio poi in_array e mi trova corrispondenza, dovrei andare a confrontare il valore $row["ord_varianza"] di entrambi e se:
    il valore di "ord_varianza" dell'array_doppie è > di ord_varianza di quello che ha l'id uguale gli devo sommare X che è un valore di default.
    se invece è < faccio la differenza tra questi 2 valori e gli devo sommare X che è sempre lo stesso valore di default

    spero di essere stato chiaro, e che qualcuno mi possa aiutare

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non mi è ben chiaro...ma ord_id_appesi è univoco? in caso contrario in_array ti dice se c'è, ma non "quale" e visto che vuoi associargli anche ord_varianza, quale prendi?

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    è univoco sì, nel senso che possono esistere solo un id "normale" e un id_appesi agganciati

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Allora potresti fare
    Codice PHP:
    $array_doppie[$row['ord_id_appesi']] = $row['ord_varianza']; 
    e cambiare l'if in
    Codice PHP:
    if(isset($array_doppie[$row['ord_id']])){
        if(
    $array_doppie[$row['ord_id']] > $row['ord_varianza']) {
          ...
        }else{
          ...
        }


  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    no aspetta perchè ord_id_appesi = ord_varianza???

    ho bisogno di un array, $array_doppie, che abbia 2 valori, non so come altro dirlo.. la butto là anche se so che è sbagliato eh..

    codice:
    $array_doppie[]= $row["ord_id_appesi"] e $row["ord_varianza"]
    
    poi se faccio:
    codice:
    if(in_array($row["ord_id"], $array_doppie)) // sul valore di ord_id_appesi ) {
    if( $array_doppie["ord_varianza"] > $row["ord_varianza"] ) { //cioè vedo il valore di ord_varianza dal valore del primo array creato, e lo confronto col valore di ord_varianza nel ciclo dove sto
    faccio_qualcosa
    } else if {
    faccio_altro
    }
    
    grazie comunque della pazienza

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    ord_id_appesi lo avresti come chiave
    Per avere due valori devi fare:
    Codice PHP:
    $array_doppie[]= array('ord_id_appesi'=> $row["ord_id_appesi"] , 'ord_varianza'=> $row["ord_varianza"]); 
    Ma poi non puoi usare la in_array().
    Visto che vuoi "cercare" ord_id_appesi/ord_id, mettilo come indice e usi la isset (per questo ti chiedevo se era unico)
    Codice PHP:
    $array_doppie[$row["ord_id_appesi"]]= 
          array(
    'ord_id_appesi'=> $row["ord_id_appesi"] , 'ord_varianza'=> $row["ord_varianza"]);

    if(isset(
    $array_doppie[$row['ord_id']])){
       if(
    $array_doppie[$row['ord_id']]['ord_varianza'] > $row['ord_varianza']){
          ...
       }else{
          ...
       }    

    Dato che però volevi lavorare su ord_varianza, l'ho rimosso e passato solo come indice semplificando il codice.
    Se ti servono entrambe, il codice sopra dovrebbe andar bene
    Ultima modifica di boots; 23-03-2018 a 20:19

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    Ti ringrazio, non ho modo di provarlo nei prossimi giorni che devo fare altro
    sei stato molto prezioso, ho capito cose che non conoscevo!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.