Visualizzazione risultati 1 fino 3 di 3

Discussione: Sostituzione chiavi di un subarray

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,236

    Predefinito Sostituzione chiavi di un subarray

    Ciao!
    Devo sostituire in questo array, una chiave appartenente al secondo array senza però toccare il resto:

    Codice PHP:
    array(
    "nome_principale" => array(
    "elemento1" => true, "elemento2" => false
    ),
    "nome_principale2" => array(
    "elemento1" => false, "elemento2" => false
    )
    )
    elemento1 o elemento2 se esistono vanno sostituiti con dei valori nuovi, se non esistono vanno inseriti.

    Quale funzione posso usare?
    Ho provato con array_replace_recursive ma mi sostituisce l'intero subarray.
    Ultima modifica di dreadnaut : 13-09-2025 alle ore 21.34.16 Motivo: + indentazione
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    23,246

    Predefinito

    Temo non esista una funzione che faccia questo. L'unica idea che mi viene in mente è farlo a mano con la unset()

    Una bozza per far capire:
    Codice PHP:
    <?php

    function ModificaArray(&$array, $mainKey, $oldKey, $newKey, $newVal = null)
    {
    if(
    array_key_exists($oldKey, $array[$mainKey]) === true)
    {
    $array[$mainKey][$newKey] = $array[$mainKey][$oldKey]; //copio il vecchio valore se esiste
    unset($array[$mainKey][$oldKey]); //elimino il vecchio indice
    }
    else
    {
    $array[$mainKey][$newKey] = $newVal; //nuovo valore, semplicemente lo creo
    }
    }

    $tuoArray = array("nome_principale" => array("elemento1" => true, "elemento2" => false), "nome_principale2" => array("elemento1" => false, "elemento2" => false)) ;

    ModificaArray($tuoArray, "nome_principale", "elemento1", "elemento3");

    var_dump($tuoArray);
    Ciao!
    Ultima modifica di alemoppo : 25-08-2025 alle ore 19.20.47

  3. #3
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,322

    Predefinito

    Non capisco quale sia il "secondo array", visto che nel primo messaggio ce n'è uno solo 🤔

    Se è questione di modificare un sottoarray, un normale array_merge dovrebbe funzionare

    Codice PHP:
    $array['nome_principale'] = array_merge($array['nome_principale'], [ 'elemento1' => 'FALSISSIMO', 'elemento3' => true ]);

    var_export($array);

    // output
    array (
    'nome_principale' =>
    array (
    'elemento1' => 'FALSISSIMO',
    'elemento2' => false,
    'elemento3' => true,
    ),
    'nome_principale2' =>
    array (
    'elemento1' => false,
    'elemento2' => false,
    ),
    )
    Ultima modifica di dreadnaut : 13-09-2025 alle ore 21.42.52

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •