Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    controllare se i valori di una chiave di un array(json) multidimensionale sono tuti uguali

    Salve ,
    ho un array annidato , un file json da cui prendo i dati, e volevo verificare se i valori di un nodo erano tutti eguali es
    codice:
    $url = 'http://mioserver.xx/api/ordine/carrello/?utente='.$user->email; 
    $data = file_get_contents($url); 
    $wizards = json_decode($data, true);
    foreach ($wizards as $wizard) {
        $marchio = $wizard['Produttore']['Nome'];
    
        echo  $wizard['Produttore']['Nome']  ;
    }
    mi serviva controllare se il valore del nome del produttore era sempre lo stesso se no mettevo un avviso..
    come potrei fare?
    grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Un'idea
    Codice PHP:
    foreach ($wizards as $wizard) {
        
    $marchio $wizard['Produttore']['Nome'];

        
    // conto il numero di elementi in $wizard['Produttore']['Nome']
        
    $count_produttore count($wizard['Produttore']['Nome']);

        
    // elimino dall'array i duplicati
        
    $tmp_array array_unique($wizard['Produttore']['Nome']);

        
    // conto le chiavi uniche
        
    $tmp_count count($tmp_array);

        
    // se il produttore era 1 già in partenza, 
        // oppure se erano più di 1 e togliendo i doppioni ne resta 1
        
    if ( $count_produttore == || ( $count_produttore &&  $tmp_count == ) )
        {
            echo 
    "il produttore era sempre lo stesso";
        }
        else
        {
            echo 
    "ci sono produttori diversi";
        }

    Si può scrivere meno codice per fare la stessa cosa, ma così capisci l'idea che c'è dietro, poi puoi affinarlo tu.
    Ultima modifica di Alhazred; 21-12-2017 a 16:22

  3. #3

    errore

    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Un'idea
    Codice PHP:
    foreach ($wizards as $wizard) {
        
    $marchio $wizard['Produttore']['Nome'];

        
    // conto il numero di elementi in $wizard['Produttore']['Nome']
        
    $count_produttore count($wizard['Produttore']['Nome']);

        
    // elimino dall'array i duplicati
        
    $tmp_array array_unique($wizard['Produttore']['Nome']);

        
    // conto le chiavi uniche
        
    $tmp_count count($tmp_array);

        
    // se il produttore era 1 già in partenza, 
        // oppure se erano più di 1 e togliendo i doppioni ne resta 1
        
    if ( $count_produttore == || ( $count_produttore &&  $tmp_count == ) )
        {
            echo 
    "il produttore era sempre lo stesso";
        }
        else
        {
            echo 
    "ci sono produttori diversi";
        }

    Si può scrivere meno codice per fare la stessa cosa, ma così capisci l'idea che c'è dietro, poi puoi affinarlo tu.
    mi da

    Warning: array_unique() expects parameter 1 to be array, string given in

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Allora non ho capito come è fatto l'array $wizards

  5. #5
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Allora non ho capito come è fatto l'array $wizards
    è un array come gli altri comunque ho fatto un modo alternativo un pò grezzo ma funzia
    cioè confronto i valori del primo con l'ultimo se sono diversi stoppo
    codice:
    $wizards = json_decode($data, true);
    
    $primo = $wizards[0]['Produttore']['Nome'];
    $ultimo = $wizards[count($wizards) - 1]['Produttore']['Nome'];
    if($primo != $ultimo){
     echo "<!--2 marchi diversi-->"; }
    }else{
        
     echo "<!--unico marchio-->"; }
    
    //si potrebbe sgrezzare
    ciao e grazie

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.