Tableau à plusieurs dimension

Résolu/Fermé
chabinot Messages postés 321 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 22 mars 2024 - 31 mai 2017 à 11:13
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 31 mai 2017 à 11:26
Bonjour,
J'ai une classe Date dont voici le code :
<?php

/**
 * Class Date
 */
class Date {
    public $days = [1 => 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'];
    public $months = [1 => 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre',
            'octobre', 'novembre', 'décembre'];
    var $jours = [];
    /**
     * @param $year
     * @return array
     */
    public function getAll($year) {
        $r = [];
        $i = 0;
        $date = new DateTime($year . '-01-01');
        while($date->format('Y') <= $year) {
            $i++;
            $y = $date->format('Y');
            $m = $date->format('n');
            $d = $date->format('j');
            $w = str_replace('0', '7', $date->format('w'));
            $r[$y][$m][$d] = $w;
            $date->add(new DateInterval('P1D'));
        }
        return $r;
    }
    public function getAllDate($year) {
        $r = [];
        $i = 0;
        $jours = [];
        $date = new DateTime($year . '-01-01');
        while ($date->format('Y') <= $year) {
            $i++;
            $y = $date->format('Y');
            $m = $date->format('n');
            $d = $date->format('j');
            $w = str_replace('0', '7', $date->format('w'));
            $jours = $this->rtvDatew($date->format('Y-m-d'));
            $r[$y][$m][$d] = $jours;
            $date->add(new DateInterval('P1D'));
        }

        return $r;
    }
    public function rtvDatew($date = null) {
        $date = new DateTime($date);
        $jour = ['', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'];
        $mois = ['', 'janvier', 'févier', 'mars', 'avril', 'mai', 'juin',
            'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'];
        $day = $date->format('N');
        $d = $date->format('d');
        return $jour[$day] . ' ' . $d;
    }

Mon code index.php :
<?php
require "class/Autoloader.php";
Autoloader::register();
// Date
$date = new Date();
$year = date('Y');
// Tableau Année - Mois - Jour
$dates = $date->getAllDate($year);
?>
<!DOCTYPE html>
<html lang="fr-FR">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-COMPATIBLE" content="ie-edge">
    <title>Calendrier</title>
    <!-- TYPOGRAPHIE -->
    <link href="https://fonts.googleapis.com/css?family=Open+Sans|Parisienne|Roboto|Lora|Megrim" rel="stylesheet">
    <!-- CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <link rel="stylesheet" href="css/app.css">
    <link rel="stylesheet" href="css/footer.css">
    <!-- SCRIPTS -->
    <script src="js/time.js"></script>
</head>
<body>
    <header class="header">
        <div class="date"><?= $date->today(); ?> - Sem : <?= $date->week(); ?> - Jour : <?= $date->dayofYear(); ?></div>
        <div class="time" id="time"><script>window.onload=dsptime('time');</script></div>
        <h1 class="text-center"><a href="/" rel="nofollow noopener noreferrer" target="_blank">Calendrier</a></h1>

    </header>
    <div class="section">
        <div class="container-fluid">
            <div class="periods">
                <div class="year"><?= 'Année : ' . $year; ?></div>
                <div class="months">
                    <ul>
                        <?php foreach ($date->months as $id=>$m) : ?>
                        <li class="mois"><?= $m ?></li>
                        <?php endforeach; ?>
                    </ul>
                </div>
                <div class="clear"></div>
                <?php $dates = current($dates); ?>

            </div>
        </div>
    </div>
    <div class="section">
       <pre><?php print_r($dates); ?></pre>
    </div>

    <footer class="footer">
        <p>© Copyright <a href="">Amaury le Cour</a>. Tous Droits Réservés</p>
    </footer>
</body>
</html>


Quand j'exécute index.php dans le navigateur :
j'obtiens bien :
Array
(
[1] => Array
(
[1] => dimanche 01
[2] => lundi 02
[3] => mardi 03
[4] => mercredi 04
[5] => jeudi 05
[6] => vendredi 06
[7] => samedi 07
[8] => dimanche 08
[9] => lundi 09
[10] => mardi 10
[11] => mercredi 11
[12] => jeudi 12
[13] => vendredi 13
[14] => samedi 14
[15] => dimanche 15
[16] => lundi 16
[17] => mardi 17
[18] => mercredi 18
[19] => jeudi 19
[20] => vendredi 20
[21] => samedi 21
[22] => dimanche 22
[23] => lundi 23
[24] => mardi 24
[25] => mercredi 25
[26] => jeudi 26
[27] => vendredi 27
[28] => samedi 28
[29] => dimanche 29
[30] => lundi 30
[31] => mardi 31
)
Comment récupérér les valeurs de chaque jour du mois ?
Exemple : [1] => dimanche 01, etc..
Un grand merci à celui qui me dépannera.
Je suis un peu novice en PHP.

2 réponses

Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
Modifié le 31 mai 2017 à 11:28
Bonjour,

Alors avant tout je ne vois pas où sont définies tes méthodes dans ta classe :
$date->today(); 
$date->week(); 
$date->dayofYear();


Pour ton notre problème tu souhaites faire quoi exactement ? Les parcourir où simplement accéder à une date ?

Pour accéder à « dimanche 01 », par exemple, tu fais juste :
$dates[1][1]
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
31 mai 2017 à 11:26
Bonjour

$dates [1]
0