2008-09-16 4 views
3

J'ai l'extrait de code suivant.foreach accéder à l'index ou un tableau associatif

$items['A'] = "Test"; 
$items['B'] = "Test"; 
$items['C'] = "Test"; 
$items['D'] = "Test"; 

$index = 0; 
foreach($items as $key => $value) 
{ 
    echo "$index is a $key containing $value\n"; 
    $index++; 
} 

Sortie prévue:

0 is a A containing Test 
1 is a B containing Test 
2 is a C containing Test 
3 is a D containing Test 

Est-il possible de laisser de la variable $index?

Répondre

11

Votre variable $ index est plutôt trompeuse. Ce numéro n'est pas l'index, vos touches "A", "B", "C", "D" sont. Vous pouvez toujours accéder aux données via l'index numéroté $ index [1], mais ce n'est vraiment pas le point. Si vous voulez vraiment garder l'index numéroté, je restructurer presque les données:

 
$items[] = array("A", "Test"); 
$items[] = array("B", "Test"); 
$items[] = array("C", "Test"); 
$items[] = array("D", "Test"); 

foreach($items as $key => $value) { 
    echo $key.' is a '.$value[0].' containing '.$value[1]; 
} 
+0

En fait c'est l'index, A, B, C et D sont des clés de tableau. –

+0

Mais vous avez raison sur la restructuration des données, votre exemple est presque exactement ce que je me suis retrouvé avec. :) –

5

Vous pouvez faire ceci:

$items[A] = "Test"; 
$items[B] = "Test"; 
$items[C] = "Test"; 
$items[D] = "Test"; 

for($i=0;$i<count($items);$i++) 
{ 
    list($key,$value) = each($items[$i]); 
    echo "$i $key contains $value"; 
} 

Je ne l'ai pas fait avant, mais en théorie, il devrait travail.

+0

Cette réponse devrait être acceptée. Exemple de travail: http://sandbox.onlinephpfunctions.com/code/84b7bc658e0c18ebebd809083b9fce3af5ea084c – Justinas

+0

Notez que 'each' est obsolète dans PHP 7.2. http://php.net/manual/fr/function.each.php – brismuth

1

Faites attention à la façon dont vous définissez vos clés. Bien que votre exemple fonctionne, il peut ne pas toujours:

$myArr = array(); 
$myArr[A] = "a"; // "A" is assumed. 
echo $myArr['A']; // "a" - this is expected. 

define ('A', 'aye'); 

$myArr2 = array(); 
$myArr2[A] = "a"; // A is a constant 

echo $myArr['A']; // error, no key. 
print_r($myArr); 

// Array 
// (
//  [aye] => a 
//) 
+0

Merci pour votre correction, j'ai mis à jour la question. –

Questions connexes