Mappare le chiavi di un array

...di un array multidimensionale col valore di una chiave interno dell'array stesso

Si tratta quindi di mappare le chiavi dell'array col valore deciso dell'array figlio.

Quindi, poniamo di avere questo array:

$array = [
    [
        'label' => 'Codice',
        'value' => 'codice'
    ],
    [
        'label' => 'EAN',
        'value' => 'ean'
    ],
    [
        'label' => 'Altezza',
        'value' => 'altezza',
        'postfix' => 'mm'
    ],
    [
        'label' => 'Larghezza',
        'value' => 'larghezza',
        'postfix' => 'mm'
    ],
    [
        'label' => 'Profondità',
        'value' => 'profondita',
        'postfix' => 'mm'
    ],
    [
        'label' => 'Materiale',
        'value' => 'materiale'
    ]
];

e lo stampiamo avremo quindi questo risultato:

Array
(
    [0] => Array
        (
            [label] => Codice
            [value] => codice
        )

    [1] => Array
        (
            [label] => EAN
            [value] => ean
        )

    [2] => Array
        (
            [label] => Altezza
            [value] => altezza
            [postfix] => mm
        )

    [3] => Array
        (
            [label] => Larghezza
            [value] => larghezza
            [postfix] => mm
        )

    [4] => Array
        (
            [label] => Profondità
            [value] => profondita
            [postfix] => mm
        )

    [5] => Array
        (
            [label] => Materiale
            [value] => materiale
        )

)

Se utilizziamo le seguenti funzioni:

$keys = array_column($all, 'value');
$all = array_combine($keys, $all);

risulterà questa stampa:

Array
(
    [codice] => Array
        (
            [label] => Codice
            [value] => codice
        )

    [ean] => Array
        (
            [label] => EAN
            [value] => ean
        )

    [altezza] => Array
        (
            [label] => Altezza
            [value] => altezza
            [postfix] => mm
        )

    [larghezza] => Array
        (
            [label] => Larghezza
            [value] => larghezza
            [postfix] => mm
        )

    [profondita] => Array
        (
            [label] => Profondità
            [value] => profondita
            [postfix] => mm
        )

    [materiale] => Array
        (
            [label] => Materiale
            [value] => materiale
        )

)

Per questa soluzione va ringraziato Federico Quagliotto.

Last updated