40 votes

comment changer la clé du tableau pour commencer à partir de 1 au lieu de 0

J'ai des valeurs dans un tableau, je veux réindexer l'ensemble du tableau de telle sorte que la première clé de valeur soit 1 au lieu de zéro, c'est-à-dire

Par défaut en PHP, la clé du tableau commence à partir de 0. c'est-à-dire 0 => a, 1=> b , je veux réindexer l'ensemble du tableau pour commencer à partir de la clé = 1 c'est-à-dire 1=> a, 2=> b, ....

53voto

Michael McTiernan Points 2395
$alphabet = array("a", "b", "c");
array_unshift($alphabet, "phoney");
unset($alphabet[0]);

Edit : j'ai décidé de comparer cette solution aux autres proposées dans ce sujet. Voici le code très simple que j'ai utilisé :

 $start = microtime(1);
for ($a = 0; $a < 1000; ++$a) {
    $alphabet = array("a", "b", "c");
    array_unshift($alphabet, "phoney");
    unset($alphabet[0]);
}
echo (microtime(1) - $start) . "\n";


$start = microtime(1);
for ($a = 0; $a < 1000; ++$a) {
    $stack = array('a', 'b', 'c');
    $i= 1;
    $stack2 = array();
    foreach($stack as $value){
        $stack2[$i] = $value;
        $i++;
    }
    $stack = $stack2;
}
echo (microtime(1) - $start) . "\n";


$start = microtime(1);
for ($a = 0; $a < 1000; ++$a) {
    $array = array('a','b','c');

    $array = array_combine(
        array_map(function($a){
            return $a + 1;
        }, array_keys($array)),
        array_values($array)
    );
}
echo (microtime(1) - $start) . "\n";

Et la sortie :

 0.0018711090087891
0.0021598339080811
0.0075368881225586

51voto

Ricardo Miguel Points 808

Voici ma proposition :

 <?php
$alphabet = array(1 => 'a', 'b', 'c', 'd');
echo '<pre>';
print_r($alphabet);
echo '</pre>';
?>

L'exemple ci-dessus affichera :

 Array
(
    [1] => a
    [2] => b
    [3] => c
    [4] => d
)

28voto

Shameer Points 1730

Essayez simplement ceci

 $array = array("a","b","c");
array_unshift($array,"");
unset($array[0]);

10voto

kasimir Points 740

La solution de Ricardo Miguel fonctionne mieux lorsque vous définissez votre tableau et que vous voulez que la première clé soit 1. Mais si votre tableau est déjà défini ou est assemblé ailleurs (fonction différente ou boucle), vous pouvez le modifier comme ceci :

 $array = array('a', 'b', 'c'); // defined elsewhere

$array = array_filter(array_merge(array(0), $array));

array_merge mettra un tableau contenant 1 élément vide et l'autre tableau ensemble, le réindexera, array_filter supprimera alors les éléments vides du tableau ( $array[0] ), en le faisant commencer à 1.

7voto

Xin Guo Points 81
$array = array('a', 'b', 'c', 'd');
$array = array_combine(range(1, count($array)), array_values($array));
print_r($array);

le résultat:

 Array
(
    [1] => a
    [2] => b
    [3] => c
    [4] => d
)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X