Ceci est mon tableau, avec l'utilisation de array_column ou de toute boucle, je veux remplacer les clés comme valeur de l'élément suivant. Je ne veux pas changer l'index du tableau parent

Array
        (
            [0] => Array
            (
                [id] => 11
                [total] => 100000
                [content] => abc
            )

            [1] => Array
            (
                [id] => 22
                [total] => 200000
                [content] => def
            )
        )

C'est le tableau que je voudrais avoir.

    Array
        (
            [0] => Array
            (
                [11] => 100000
                [content] => abc
            )

            [1] => Array
            (
                [22] => 200000
                [content] => def
            )
        )
0
Sachin Agrawal 28 nov. 2017 à 14:27

3 réponses

Meilleure réponse

C'est très simple Essayez ceci: -

$array = array(
    '0'=>array('id'=> 10,'total'=> 100000,'content' => 'abc'),
    '1'=>array('id'=> 11,'total'=> 200000,'content' => 'def')
);

foreach($array as $key => $val){
    $array[$key][$val['id']] = $val['total'];
    unset($array[$key]['total']);
    unset($array[$key]['id']);
 }
 echo "<pre>"; print_r($array); die;    // print array data here

J'espère que cela aide!

1
kunal 28 nov. 2017 à 11:45

Utiliser 'foreach' pour modifier un tableau existant fonctionne parfaitement, mais 'array_walk' est juste plus expressif, car il a été conçu pour cette tâche.

<?php

$array = [
    [
        'id' => 11,
        'total' => 10000,
        'content' => 'abc'
    ],
    [
        'id' => 22,
        'total' => 200000,
        'content' => 'def'
    ]
];

array_walk($array, function(&$row) {
    $row[$row['id']] = $row['total'];
    unset($row['id'], $row['total']);
});

var_dump($array);
0
Oleksandr Zaitsev 28 nov. 2017 à 11:52

Cela peut être fait avec la fonction array_map

$new = array_map(function($x) {
                 return [ $x['id']=> $x['total'], 'content' => $x['content']]; },
                 $array);

démo

0
splash58 28 nov. 2017 à 12:05
47530419