[RESOLU] Ajouter une colonne à un tableau 2D

Eléphant du PHP | 65 Messages

10 juil. 2014, 20:51

Bonjour,

J'ai un tableau indexé numériquement :
$tab_liste2d2 [ nombreDeLigne ][ nombreDeColonne ]
où nombreDeColonne = 4
et je voudrais, pour ce même tableau,
nombreDeColonne = 5

par une boucle for ou foreach car nombreDeLigne est variable selon le cas

Je sollicite encore votre aide.

Mammouth du PHP | 1339 Messages

11 juil. 2014, 08:34

foreach($a as $k =>$v) {
foreach($v as $key => $val) {
 echo $val;
}
}
Ca marche ca ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Mammouth du PHP | 2278 Messages

11 juil. 2014, 10:14

Le tableau d'origine est du genre
11 12 13 14
21 22 23 24
etc
et tu voudrais qu'il devienne:
11 12 13 14 15 ou vide
21 22 23 24 25 ou vide
etc
ou est-ce que j'ai mal compris?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 65 Messages

11 juil. 2014, 10:48

Le tableau d'origine est du genre
11 12 13 14
21 22 23 24
etc
et tu voudrais qu'il devienne:
11 12 13 14 15 ou vide
21 22 23 24 25 ou vide
etc
ou est-ce que j'ai mal compris?
Merci déjà sirakawa pour t'intéresser à mon sujet

C'est effectivement ça pour le nouveau tableau àp de l'ancien (5 champs au lieu de 4), pour le tableau modifié :
15 ou vide
et
25 ou vide
... etc pour les lignes suivantes (nb de lignes indéterminé -rappel-)

Eléphant du PHP | 65 Messages

11 juil. 2014, 11:36

J'ai trouvé un solution qui fonctionne, mais pas très académique à mon goût :
$j=0;
foreach ($tab_liste2d as $tab_ligne2) { 
//ajouter un numéroDeColonne à $tab_ligne2
	//for ($i=0; $i<=((count($tab_ligne2))+1); $i++) {
	for ($i=0; $i<=4; $i++) {
		//echo "\$i = ".$i." | ";
		$tab_liste2d2[$j][$i] = $tab_ligne2[$i];
	}
	$j++;
}
perfectible ?
en auriez-vous une plus simple ?

Mammouth du PHP | 2278 Messages

11 juil. 2014, 11:55

Ou ça:
<?PHP
/*attention en adaptant : j'ai numéroté les lignes et les colonnes à partir de 1*/
$tab = array(
1 => array(1=>11,2=>12,3=>13,4=>14),
2 =>array (1=>21,2=>22,3=>23,4=>24),
3 => array(1=>31,2=>32,3=>33,1=>34),
);
print_r($tab);

$nb_lignes_a_modifier = 2;
for ($i = 1 ; $i <= $nb_lignes_a_modifier; $i++)
{
	$tab[$i][]= "";
}
print_r($tab);

?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ynx
Mammouth du PHP | 586 Messages

11 juil. 2014, 12:08

Ou encore :
$tab_liste2d = array(
		array(11, 12, 13, 14),
		array(21, 22, 23, 24),
		array(31, 32, 33, 34)
	);


foreach ($tab_liste2d as &$ligne) {
	$ligne[sizeof($ligne)] = $ligne[sizeof($ligne) -1] + 1;
}

unset($ligne);

var_dump($tab_liste2d);

Eléphant du PHP | 65 Messages

11 juil. 2014, 12:42

effectivement dans lea boucle for mon
$i<=((count($tab_ligne2))+1);
n'est pas bon
j'ai corrigé:
$i<=(count($tab_ligne2));
merci à tous