PHP - gérer des tableaux à deux dimensions ?

Mac iMesser

Membre actif
13 Mars 2005
148
0
Genève
Comment gérer un tableau PHP à deux dimensions ?
(À ce sujet, la doc est d'une discrétion remarquable ! :( ).

Le problème : j'ai créé un tableau $calendrier à 2 dimensions (Mois et Duree). L'initialisation semble correcte et je peux exploiter séparément les deux colonnes (mois ou duree), comme le démontre le listing ci-dessous.

Maintenant, j'aimerais exploiter les deux informations simultanément (par exemple, en affichant en parallèle le nom et la durée de chaque mois). Je sèche, c'est sans doute très simple... mais je ne vois pas. Il me semble pourant avoir « tout » essayé... :cool:

Merci pour votre aide. :zen:

----------- Le listing : -------------------------
<?php
$calendrier = array (
"mois" => array (1 => 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'),
"duree" => array (1 => 31,28,31,30,31,30,31,31,30,31,30,31)
);

print_r($calendrier);
echo '<br />';

// Affichage des noms de mois
foreach ($calendrier ["mois"] as $cle1 => $nom){
echo "$nom <br />";
}
// Affichage du nombre de jours par mois
foreach ($calendrier ["duree"] as $cle2 => $jours){
echo "$jours <br />";
}

?>
----------------------
 
Je pense que ton tableau est mal construit et qu'un tableau de ce genre serait mieux :

$calendrier = array (
array('Janvier', 31), array('Février, 28), ...);

Et de cette manière, tu dois pouvoir faire un foreach sur tous le tableau $calendrier, puis afficher pour chaque élément de ce tableau, la position 1 du tableau et la position 2.

Note à part ça, qu'il doit très certainement avoir un moyen de récupérer le nombre de jour d'un mois en PHP, ce qui serait bien plus propre encore qu'un tableau fait à la main (comment gères-tu le mois de février par exemple ?)
 
  • J’aime
Réactions: Human-Fly
Bloc de code:
//UTF-8 NO BOM Locale.fr.php
<?PHP
    define("__JUNE__","Juin");
    define("__FEBRUARY__","Février");
...
?>

<?PHP

    function getMonthCalendar($lang)
    {
        require_once "Locale.".$lang."php";
        
        return (
        
            array(
                array("__JUNE__",31),
                array("__FEBRUARY__",28)
...
            )
        );
    }
?>
sachant que ce code bien qu'essayant d'avoir une écriture convenable ...
est complétement foireux
année bissextile ... au lieu de réécrire une chose foireuse et incomplete

http://www.php.net/manual/en/ref.calendar.php

et surtout regarder la doc d'un language avant ...

http://www.php.net/manual/en/ref.array.php

php est permissif mais il ne se dérobe pas aux lois de la prog
le monde des devs est séparé en deux :
ceux qui savent et utilisent les docs et ceux qui scribouillent
toi tu scribouilles

si tu veux arrêter de scribouiller et vraiment apprendre met aux placards ces très mauvaises habitudes
qui te font perdre du temps sur des choses simples rien ne vaut une bonne lecture avant d'écrire
quoi que se soit
:zen:
 
Moglow a parfaitement raison. La méthode qui utilisie les tableaux associatifs est plus appropriée dans ton cas.
Par ailleurs, le nombre de jour variant d'une année à l'autre (mois de février), les fonctions PHP dédiées sont encore plus efficaces : http://www.php.net/manual/fr/ref.datetime.php. :)
Et tatouille n'a pas tout à fait tord. La fonction PHP cal_days_in_month répond exactement à ton besoin et prend en plus en compte les années bissextiles... http://www.php.net/manual/en/function.cal-days-in-month.php
 
surtout qu'un tableau a 2d est un 1 tableau à 2d

$arr[0][0]
$arr[0][1]
$arr[0][2]

...
si tu dois faire des manipulations comme sort ...
ca devient un problème de comparer deux tableaux
qui dépendent de leur ordre de dépard

donc constat de l'exercice de dépard :
--manipuler un tableau à 2d ? ce n'est pas un tableau à 2d
--le sujet du dit exercice est foireux car fait fi de l'aide du language ses frameworks

tu peux t'amuser à réécrire des choses entre différents languages mais fait le correctement
pour apprendre à t'affranchir du language

xCrypt.js
stringUtil.js

Bloc de code:
def chunk_split(body,chunklen,end):
    i = 0
    chunksplit = ''
    slen = len(body)
    
    while i+chunklen < slen:
        chunksplit = chunksplit + body[i:i+chunklen] + end
        i = i + chunklen;
        
    if i < slen :
        chunksplit = chunksplit + body[i:slen]
        
    return chunksplit

def strrev(str):
    return str[::-1]
si tu veux après faire des algos de base travaille et contribue
aux features d'un language qui utilise déjà les frameworks de l'os
ou il est présent ...

c'est ce que l'on appel aussi la programmation objet
ce n'est pas le simple faite de programmer avec un language objet
organiser le filesystem du déploiement d'une application en fait partie aussi
ses libs dans le lib les bins dans le bin ...
pas de html ds tes scripts php ni de labels non localisés ...
pour ça il ya le xml, le html, les db ...

ce n'est qu'un exemple

:zen:
 
Merci pour vos contributions...

Le fait que l'exemple manipule le calendrier était totalement fortuit et involontaire. Ce n'était pas un problème de calendrier, mais un problème de tableau...