Ho un array come sottosostituire chiavi degli array con determinate rispettivi tasti
$old = array(
'a' => 'blah',
'b' => 'key',
'c' => 'amazing',
'd' => array(
0 => 'want to replace',
1 => 'yes I want to'
)
);
Ho un'altra matrice essendo chiavi per sostituire le informazioni chiave.
$keyReplaceInfoz = array('a' => 'newA', 'b' => 'newB', 'c' => 'newC', 'd' => 'newD');
necessario sostituire tutte le chiavi di matrice $old
a rispettivi valori nella matrice $keyReplaceInfo
.
uscita dovrebbe essere così
$old = array(
'newA' => 'blah',
'newB' => 'key',
'newC' => 'amazing',
'newD' => array(
0 => 'want to replace',
1 => 'yes I want to'
)
);
ho dovuto farlo manualmente come di seguito. Mi aspetto un'opzione migliore. qualcuno può suggerire un modo migliore per realizzare questo?
$new = array();
foreach ($old as $key => $value)
{
$new[$keyReplaceInfoz[$key]] = $value;
}
So che questo può essere più semplice.
'array_combine' funziona solo se le chiavi e i valori sono nell'ordine corretto e c'è una sostituzione per ogni chiave. (Ho considerato questa soluzione come me stessa). – Leigh
In realtà l'unico problema di cui sopra è che non funzionerà se non c'è una sostituzione per ogni chiave. L'ordine non è un problema a causa di array_merge ($ old, $ keyReplaceInfoz). – Summoner
Ci sono un paio di problemi, entrambi relativi al numero di elementi. Se la matrice di sostituzione contiene una chiave che non si trova nel vecchio array, ci sarà un avviso PHP (e nulla verrà sostituito). Se all'array di sostituzione manca una chiave dal vecchio array, la chiave nel vecchio array verrà sostituita con il proprio _value_ – Leigh