Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tableau a plusieurs dimensions (question de neuneu debutant)

7 réponses
Avatar
Eric Demeester
Bonjour,

Cela fait quelques temps que je pratique PHP, mais je n'ai pas encore eu
l'occasion de me frotter aux subtilités des « arrays ».

J'ai lu la doc officielle et divers articles avant de venir vous
demander de me secourir, parce que je ne comprends toujours pas la
logique de la chose.

J'ai compris que je pouvais définir un array prénom par exemple :

$prenoms = array ("François", "Michel", "Nicole", "Véronique");

En revanche, contrairement aux autres langages que je pratique, PHP ne
semble pas permettre de définir de tableau multidimentionnel générique,
genre :

$article = array ($article, $prix_unitaire, $quantite, $acquereur);

à savoir une structure elle-même constituée de variables.

J'ai compris quelque chose de travers ?

--
Eric

7 réponses

Avatar
Vincent Lascaux
$article = array ($article, $prix_unitaire, $quantite, $acquereur);

à savoir une structure elle-même constituée de variables.

J'ai compris quelque chose de travers ?


Oui, ca devrait fonctionner... T'as un example de quelques lignes d'un code
qui ne fonctionne pas ?

--
Vincent

Avatar
John GALLET
Eric,

Cela fait quelques temps que je pratique PHP, mais je n'ai pas encore eu
l'occasion de me frotter aux subtilités des « arrays ».


Si ça peut te rassurer, depuis décembre 1999 que j'en bouffe, j'ai
toujours du mal à les définir en une seule ligne, je préfère l'affectation
explicite des indices ou des clefs. La syntaxe n'est pas "naturelle" si on
des réflexes de tableaux indexés. En PHP, tous les tableaux sont des
hashtables, donc des tableaux associatifs, donc nommés par des clefs et
non des entiers. En ceci, la syntaxe objet aide à l'écriture car on est
obligé de nommer les propriétés explicitement.

J'ai compris que je pouvais définir un array prénom par exemple :
$prenoms = array ("François", "Michel", "Nicole", "Véronique");
Yes. C'est un tableau de strings, indicé de zéro à 3.


En revanche, contrairement aux autres langages que je pratique, PHP ne
semble pas permettre de définir de tableau multidimentionnel générique,
genre :
$article = array ($article, $prix_unitaire, $quantite, $acquereur);
à savoir une structure elle-même constituée de variables.


Si, mais là tu as une forme en indices, ce qui n'est pas une struct en C,
par exemple.

Si tu écris :
struct _acquereur {
char *nom;
char *adresse;
/* ... */
};
struct _mastruct {
char *article,
float prix_unitaire,
float quantite,
struct _acquereur* acquereur
}

en PHP tu écriras :
$mon_array=array(
'article'=>'Tutoriel PHP',
'prix_unitaire'=>0.0,
'quantite'=>1,
'acquereur'=>array('nom'=>'Eric','adresse'=>'1 rue....');
);

J'ai compris quelque chose de travers ?
Je te conseille fortement la fonction print_r( ), avec le paramètre

optionnel à TRUE pour afficher le résultat de manière contrôlée.

Exemples :
<?php
$toto=array("a","b","c");
print_r($toto);

$toto=array(
0=>"a",
1=>"b",
2=>"c");
print_r($toto);

$tutu=array('tutu'=>$toto);
print_r($tutu);

$tutu=array(0=>$toto);
print_r($tutu);

$tutu=array($toto);
print_r($tutu);
?>

En l'occurence, sur ton cas, le dernier ici :
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
)
Donc pour adresser b, c'est $tutu[0][1], par exemple. Ce qui est
fichtrement plus lisible si on nomme les champs.

HTH
JG

Avatar
Antoine Polatouche
$article = array ($article, $prix_unitaire, $quantite, $acquereur);

à savoir une structure elle-même constituée de variables.

J'ai compris quelque chose de travers ?


Oui, ca devrait fonctionner... T'as un example de quelques lignes d'un code
qui ne fonctionne pas ?

$article = array( $article ...

risque de poser des problèmes, non?


Avatar
Vincent Lascaux
$article = array ($article, $prix_unitaire, $quantite, $acquereur);

à savoir une structure elle-même constituée de variables.

J'ai compris quelque chose de travers ?


Oui, ca devrait fonctionner... T'as un example de quelques lignes d'un
code
qui ne fonctionne pas ?

$article = array( $article ...

risque de poser des problèmes, non?


Il ne me semble pas... en tous cas avec PHP 5.1.2, ca fait ce à quoi je
m'attends :

$a = 2;
$a = array($a, 3); // Pareil que $a = array(2, 3)
$a = array($a, 4); // Pareil que $a = array(array(2, 3), 4)

fait pareil que
$a = array(array(2, 3), 4);

--
Vincent



Avatar
Antoine Polatouche
$article = array ($article, $prix_unitaire, $quantite, $acquereur);

à savoir une structure elle-même constituée de variables.

J'ai compris quelque chose de travers ?
Oui, ca devrait fonctionner... T'as un example de quelques lignes d'un

code
qui ne fonctionne pas ?

$article = array( $article ...

risque de poser des problèmes, non?


Il ne me semble pas... en tous cas avec PHP 5.1.2, ca fait ce à quoi je
m'attends :


Peut-être qu'Eric ne s'attend pas à ça ;-)




Avatar
Olivier Miakinen
John ayant répondu à la question d'Éric, je réponds uniquement à ta
question, indépendante du problème de tableaux multidimensionnels.


$article = array ($article, $prix_unitaire, $quantite, $acquereur);


$article = array( $article ...

risque de poser des problèmes, non?


Pas forcément. En tout cas cela ne crée pas de référence circulaire.


$article = "bidule";
$prix_unitaire = 300;
$quantite = 2;
$acquereur = "moi";
/* $article == "bidule" */

$article = array($article, $prix_unitaire, $quantite, $acquereur);
/* $article == array("bidule", 300, 2, "moi") */

$article = array($article, $prix_unitaire, $quantite, $acquereur);
/* $article == array(array("bidule", 300, 2, "moi"), 300, 2, "moi") */


... et ainsi de suite.



Avatar
Bruno Desthuilliers
Bonjour,

Cela fait quelques temps que je pratique PHP, mais je n'ai pas encore eu
l'occasion de me frotter aux subtilités des « arrays ».

J'ai lu la doc officielle et divers articles avant de venir vous
demander de me secourir, parce que je ne comprends toujours pas la
logique de la chose.

J'ai compris que je pouvais définir un array prénom par exemple :

$prenoms = array ("François", "Michel", "Nicole", "Véronique");

En revanche, contrairement aux autres langages que je pratique, PHP ne
semble pas permettre de définir de tableau multidimentionnel générique,
genre :

$article = array ($article, $prix_unitaire, $quantite, $acquereur);

à savoir une structure elle-même constituée de variables.

J'ai compris quelque chose de travers ?

Probablement :


<?php
$article = Array('id'=>1, 'libelle'=>'article 1');
$prix_unitaire = 11.38;
$quantite = 42;
$acquereur = Array("Eric", "Demeester");

$commande = array($article, $prix_unitaire, $quantite, $acquereur);

print_r($commande);
echo "<br />";
echo "article id " . $commande[0]['id'] ." - libelle " .
$commande[0]['libelle'];
echo "<br />";
echo "acquereur prenom " . $commande[3][0] ." - nom " . $commande[3][1];
?>

Array ( [0] => Array ( [id] => 1 [libelle] => article 1 ) [1] => 11.38
[2] => 42 [3] => Array ( [0] => Eric [1] => Demeester ) )
article id 1 - libelle article 1
acquereur prenom Eric - nom Demeester