Accès à une donnée d'un Array multidimensionnel

Petit nouveau ! | 9 Messages

17 mai 2011, 12:28

Bonjour,

Voici mon problème existentialiste du jour.

J'ai un tableau multidimensionnel
$tableau= array( array("TOTO", "VAR", 15),
               array("TITI", "NUM", 25),
               array("TUTU", "VAR", 35) 
             ); 
Les lignes et colonnes du tableaux sont alimentée directement avec une boucle sur une requête SQL.

Je souhaiterais pouvoir afficher la 3ième colonne d'une ligne dont je connais la valeur présente dans la première colonne du tableau
Exemple : Je voudrais afficher la 3ième colonne de "TITI" (le tableau étant alimenté dynamiquement, je ne connais pas par avance la position de la ligne "TITI" dans le tableau.

Est ce que ce type de code fonctionnerait, ou existe t'il quelque chose de plus simple ?
echo $tableau[(array_search('TITI', $tableau) )][2] ;

ViPHP
xTG
ViPHP | 7331 Messages

17 mai 2011, 13:28

Je pense que tu as du en tester te rendre compte que ça ne fonctionnait pas. ^^

Voilà une solution pour une structure fixe :
<?php
$tableau= array( array("TOTO", "VAR", 15),
               array("TITI", "NUM", 25),
               array("TUTU", "VAR", 35)
             ); 
$recherche = "TITI";
function recherche($recherche, &$tableau)
{
	foreach($tableau as $key => $val)
	{
		if( isSet($val[0]) && $val[0] == $recherche )
			return $key;
	}
	return null;
}

$index = recherche($recherche,$tableau);
if( $index != null && isSet($tableau[$index][2]) )
	echo $tableau[$index][2];

Petit nouveau ! | 9 Messages

17 mai 2011, 14:43

Merci je vais tester ta fonction

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 mai 2011, 18:47

N'as-tu pas moyen de coller un index à chaque ligne quand tu construis le tableau ?
$tableau= array( 
  "TOTO" => array("TOTO", "VAR", 15),
  "TITI" => array("TITI", "NUM", 25),
  "TUTU" => array("TUTU", "VAR", 35) 
); 
Tu pourrais ainsi facilement retrouver ta valeur :
echo $tableau["TUTU"][2]; // affiche 35
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 9 Messages

17 mai 2011, 20:08

Si c'est faisable et je m'en vais tester cela tout de suite.
Merci