Signaler

Tableau à plusieurs dimension [Résolu]

Posez votre question chabinot 52Messages postés mardi 10 novembre 2015Date d'inscription 17 août 2017 Dernière intervention - Dernière réponse le 31 mai 2017 à 11:26 par jordane45
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.

Utile
+0
plus moins
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]
Donnez votre avis
Utile
+0
plus moins
Bonjour

$dates [1]
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !