[Livro PHP e MySQL] Dúvidas em geral

php-mysql

#127

Olá, @Raul.

Me parece que o problema está na variável global $contador.
O ideal é não usar variáveis globais. Elas podem gerar diversos tipos de problemas.

Em vez de uma variável global, que tal se você passar algo como $comeca_em para a função calendario()? Algo como function calendario($total_dias, $comeca_em). Aí você pode manter o controle disso fora da função calendario().


#128

Obrigado @evaldojuniorbento !

Acabei começando a correção no calendário de outra forma: transformei a $contador em variável estática e a usei para colocar espaços vazios no array $semana. Mas nos meses que devem começar na segunda feira não deu certo, nos outros meses deu. Olha como ficou minha função $calendario:

function calendario($total_dias){
        $calendario = "";
        $dia = 1;
        $semana = [];
        static $contador = 0;
               
             
            if ($contador > 1){
                for($y=0; $y <= ($contador - 1); $y++){
                array_push($semana, " ");
                }
            }
       
            while($dia <= $total_dias){
                array_push($semana,$dia);

                if(count ($semana) == 7){
                    $calendario .=linha($semana);
                    $semana = [];
                } else {
                    $contador = count($semana);
                    
                }

                $dia++;
            }
                
                $calendario .=linha($semana);  
                echo $contador;
                
               

                return $calendario;     
        }

Muito Obrigado!