2012-08-22 7 views
2

Supposons que je le tableau suivant:Jetez tableau entier, mais le premier élément

$array(
    '32' => array('name' => 'paul', 'age' => 43), 
    '17' => array('name' => 'eric', 'age' => 19), 
    '99' => array('name' => 'dave', 'age' => 65) 
) 

Je ne suis intéressé par le premier élément $array:

$array2 = array('key'=> 32, 'name' => 'paul', 'age' => 43) 

Quelle est la façon la plus efficace pour accomplir ce? En d'autres termes, puis-je jeter tous les autres éléments de $ array avec une seule commande?

+0

Souhaitez-vous que votre premier élément à être étendu avec le 'key'? – biziclop

Répondre

10

Utiliser array_shift().

array_shift() déplace la première valeur du tableau et la retourne, raccourcissant le tableau d'un élément et en déplaçant tout vers le bas. Toutes les touches de tableau numérique seront modifiées pour commencer à compter à partir de zéro tandis que les touches littérales ne seront pas touchées.

$array2 = array_shift($array); 

Cela signifie que $array2 occupe maintenant le premier élément, tandis que $array maintient le reste des éléments.

1
$newArr = reset($array); 

Je pense qu'il n'y a aucun problème avec cela.

+0

'[0]' n'est pas une clé valide dans l'exemple, donc cela ne fonctionnerait pas –

+0

@AaronW. C'est vrai, je viens d'éditer ma réponse. – oopbase

+0

Cela produirait un tableau qui contient un autre tableau avec une clé de zéro. Faire simplement '$ newArr = reset ($ array);' serait plus ce que l'OP cherche je pense (moins la clé 'key'). –

2

essayer cette

$array2 = array_shift($array); 
0

Il y a 2 options, vraiment. Soit vous pouvez simplement sélectionner le premier élément du tableau

$array2 = $array[0]; 

Ou vous pouvez utiliser array_slice comme

$array2 = array_slice($array, 0, 1); 
0

reset ting un tableau renvoie également le premier élément (end() retourne la dernière):

$first = reset($array); 

http://www.php.net/manual/en/function.reset.php

Mais pour générer le résultat exact que vous voulez, vous pouvez écrire quelque chose comme ça

foreach($array as $k => $first){ // get first sub-array and its key 
    $first['key'] = $k; // add the key 
    break;    // we don't care about the other elements, goodbye 
} 

méthode de Futuregeek fixe:

$first = 

    // returns first element, and sets it as the current element for key() 
    reset($array) 

    // instead of array_merge, (sometimes) you can use the + operator 
    + 

    // key() will return the appropriate key after reset() 
    array('key' => key($array)); 
0

array_shift est probablement la meilleure façon. Mais juste pour le plaisir, voici une autre façon.

$first_element = end(array_reverse($array)); 
0
$k = array_merge(array('key' => key($array)), array_shift($array)); 

retours dans le format spécifié.

key vous obtient la première clé, array_shift vous obtient la première valeur, et de fusion en utilisant array_merge

+1

Shorter + réinitialise le tableau: '$ k = réinitialisation ($ array) + array ('clé' => clé ($ array));' :) – biziclop

0
Try It : 


$arr = array(
    '32' => array('name' => 'paul', 'age' => 43), 
    '17' => array('name' => 'eric', 'age' => 19), 
    '99' => array('name' => 'dave', 'age' => 65) 
); 

foreach($arr as $key => $value) 
{ 
    $result[$key] = $value; 
    break; 
} 
print_r($result); 

##-------Secount Way If you don't want Key 32-------------------------- 

$arr = array(
    '32' => array('name' => 'paul', 'age' => 43), 
    '17' => array('name' => 'eric', 'age' => 19), 
    '99' => array('name' => 'dave', 'age' => 65) 
); 

$arr = array_reverse($arr); 
print_r(end($arr)); 

#------ Third Way If you don't want Key 32 ------------- 

echo "<br>=======<br>"; 

$arr = array(
    '32' => array('name' => 'paul', 'age' => 43), 
    '17' => array('name' => 'eric', 'age' => 19), 
    '99' => array('name' => 'dave', 'age' => 65) 
); 

$array2 = array_shift($arr); 
print_r($array2); 
+0

Le contraire de 'end' est' reset', vous ne le faites pas avoir à inverser le tableau! Voir http://www.php.net/manual/en/function.reset.php – biziclop

Questions connexes