Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    50

    Come invertire chiave-valore tra due array

    Non so se il titolo e' corretto, ma questo e' un esempio che sicuramente e' piu' chiaro.
    Da due array devo generarne un terzo, in questo modo

    Array 1
    Codice PHP:
    (
        [
    12] => a
        
    [13] => b
        
    [14] => c
        
    [15] => d
        
    [16] => e
        
    [17] => f
        
    [18] => g
        
    [19] => h
        
    [20] => i
        
    [21] => l
        
    [22] => m

    Array 2
    Codice PHP:
    [0] => Array
            (
                [
    codice] => 13
            
    )

    [
    1] => Array
            (
                [
    codice] => 16
            
    )

    [
    2] => Array
            (
                [
    codice] => 19
            

    Array 3
    Codice PHP:
    (
        [
    a] => 0
        
    [b] => 1
        
    [c] => 0
        
    [d] => 0
        
    [e] => 1
        
    [f] => 0
        
    [g] => 0
        
    [h] => 1
        
    [i] => 0
        
    [l] => 0
        
    [m] => 0

    Ovvero, l'array03 deve avere come chiave i valori dell'array01 e dove queste chiavi presentano i valori dell'array02, allora i valori dell'array03 saranno ad 1 altrimenti a 0.

    Spero che sia stato chiaro.
    C'e' una maniera di farlo?
    Io non ci riesco.

    Questo codice infatti riporta solo l'ultimo elemento dell'array02 uguagliato a 1, mentre tutti gli altri rimangono a 0.

    $result -> Array01
    $BaseTipo01 -> Array02
    $aReturn -> Array03

    Codice PHP:
    foreach ($result as $key => $value) {
         foreach (
    $aBaseTipo01 as $keyBase01 => $valueBase01) {
            if (
    $keyBase01 == $result[$key]['cod_tipo']) {
                
    $aReturn[$aBaseTipo01[$keyBase01]] = '1';
            } else {
                
    $aReturn[$aBaseTipo01[$keyBase01]] = '0';
            }
        }

    Grazie
    Ciao

  2. #2
    In pratica te prendi il valore numerico del primo array, crey un terzo array con nome del campo = a valore array uno

    (esempio a = )

    come valore iniziali gli dai zero.

    poi fai un count dei valori dell'array due

    fai un ciclo, fintanto che non ho finito di ciclare tutti i valori O (notare bene) una determinata variabile di controllo non vale 1 continua, quindi te cicli l'array due, se uno dei valori corrisponde come valore numerico al valore numerico dell'array uno metti al valore letterale corrispondete il valore 1 (facendo quindi uscire dal ciclo impostando una variabile di controllo), altrimenti lasci 0 ed il ciclo continua

    e via dicendo...

    a livello logico è un pò complesso ma credo che possa funzionare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    50
    Grazie per la risposta.
    Ho risolto facendo al contrario.
    Ovvero, l'array che leggo non e' il secondo, ma il primo e con un flag fuori del secondo ciclo, assegno i valori.

    In sintesi il codice e' qualcosa del genere
    Codice PHP:
    foreach ($aBaseTipo01 as $keyBase01 => $valueBase01) {
            
    $flagExist 0;

            foreach (
    $result as $key => $value) {
                if (
    $result[$key]['cod_tipo'] == $keyBase01) {

                    
    $flagExist 1;
                }
            }

            if (
    $flagExist) {
                
    $aReturn[$aBaseTipo01[$keyBase01]] = '1';
            } else {
                
    $aReturn[$aBaseTipo01[$keyBase01]] = '0';
            }
        } 

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 © 2025 vBulletin Solutions, Inc. All rights reserved.