Commande each plus valide en php 8.1
Résolu/Fermé
A voir également:
- Commande each plus valide en php 8.1
- Ethernet n'a pas de configuration ip valide - Guide
- Clé windows 8.1 - Guide
- Invite de commande - Guide
- Commande terminal mac - Guide
- Easy php - Télécharger - Divers Web & Internet
7 réponses
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
Modifié le 19 janv. 2022 à 15:38
Modifié le 19 janv. 2022 à 15:38
Bonjour,
Commence par nous faire un
et montre nous ce que ça te donne.
Ensuite, explique nous ce que tu veux obtenir dans ta variable $rooms
Commence par nous faire un
var_dump($room_hash);
et montre nous ce que ça te donne.
Ensuite, explique nous ce que tu veux obtenir dans ta variable $rooms
Bonsoir et merci,
voila ce que j'obtiens avec each :
array(3) { ["Saint Pierre"]=> int(1) ["Saint André"]=> int(1) ["Sainte Cécile"]=> int(1) }
et avec foreach :
array(3) { ["Saint Pierre"]=> int(1) ["Saint André"]=> int(1) ["Sainte Cécile"]=> int(1) }
C'est la même chose, et pourtant par la suite, j'ai le message avec le foreach : Division by zero et dans le tableau, un 1 au lieu du nom que je vous ai montré, et des cases vides au lieu des chiffres habituels
Cordialement
Giludo
voila ce que j'obtiens avec each :
array(3) { ["Saint Pierre"]=> int(1) ["Saint André"]=> int(1) ["Sainte Cécile"]=> int(1) }
et avec foreach :
array(3) { ["Saint Pierre"]=> int(1) ["Saint André"]=> int(1) ["Sainte Cécile"]=> int(1) }
C'est la même chose, et pourtant par la suite, j'ai le message avec le foreach : Division by zero et dans le tableau, un 1 au lieu du nom que je vous ai montré, et des cases vides au lieu des chiffres habituels
Cordialement
Giludo
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
Modifié le 19 janv. 2022 à 18:40
Modifié le 19 janv. 2022 à 18:40
Tu n'as pas répondu à mes questions ......
Mais je suppose que ce que tu veux obtenir, c'est la liste des "clés"....
Tu pourrais, dans ton foreach faire
Sinon, plus propre.. il existe la fonction array_keys
https://www.php.net/manual/fr/function.array-keys.php
Mais je suppose que ce que tu veux obtenir, c'est la liste des "clés"....
Tu pourrais, dans ton foreach faire
$rooms = []; foreach($room_hash as $K => $V){ $rooms[] = $K; }
Sinon, plus propre.. il existe la fonction array_keys
https://www.php.net/manual/fr/function.array-keys.php
voici le code servant à créer le tableau :
while (list($room_key) = each($room_hash)) $rooms[] = $room_key;
sort($rooms);
reset($name_hash);
while (list($name_key) = each($name_hash)) $names[] = $name_key;
// foreach ($name_hash as $name_key) $names[] = $name_key;
sort($names);
$n_rooms = sizeof($rooms);
$n_names = sizeof($names);
// On affiche uniquement pour une sortie HTML
if ($csv == "n")
{
if ($sumby=="1")
$premiere_cellule = "Paroisse";
else if ($sumby=="5")
$premiere_cellule = "Type";
else if ($sumby=="6")
$premiere_cellule = "Utilisateur";
else if ($sumby=="7")
$premiere_cellule = "Jour";
else if ($sumby=="8")
$premiere_cellule = "Semaine";
else if ($sumby=="9")
$premiere_cellule = "Mois";
else
$premiere_cellule = grr_sql_query1("select fieldname from grr_overload where id='$sumby'");
echo "<hr /><h1>Comptage des réservations : (nombre) heures / frais </h1><table border=2 cellspacing=4>\n";
if ($sumby=="1")
echo "<tr><td class=\"BL\" align=left><b>".$premiere_cellule." \ Mois</b></td>\n";
else
echo "<tr><td class=\"BL\" align=left><b>".$premiere_cellule." \ Salle</b></td>\n";
}
for ($c = 0; $c < $n_rooms; $c++)
{
if ($csv == "n")
echo "<td class=\"BL\" align=left><b>$rooms[$c]</b></td>\n";
else
echo "$rooms[$c]\t";
$col_count_total[$c] = 0;
$col_hours_total[$c] = 0.0;
$col_frais_total[$c] = 0;
}
if ($csv == "n")
echo "<td class=\"BR\" align=right><br><b>Total</b></td></tr>\n";
else
echo "Total\t\r\n";
$grand_count_total = 0;
$grand_hours_total = 0;
$grand_frais_total = 0;
for ($r = 0; $r < $n_names; $r++)
{
$row_count_total = 0;
$row_hours_total = 0.0;
$row_frais_total = 0;
$name = $names[$r];
if ($csv == "n")
echo "<tr><td class=\"BR\" align=right><b>$name</b></td>\n";
else
echo "$name\t";
for ($c = 0; $c < $n_rooms; $c++)
{
$room = $rooms[$c];
if (isset($count[$room][$name]))
{
$count_val = $count[$room][$name];
$hours_val = $hours[$room][$name];
$frais_val = $frais[$room][$name];
cell($count_val, $hours_val, $frais_val, $csv, $decompte);
$row_count_total += $count_val;
$row_hours_total += $hours_val;
$row_frais_total += $frais_val;
$col_count_total[$c] += $count_val;
$col_hours_total[$c] += $hours_val;
$col_frais_total[$c] += $frais_val;
} else {
if ($csv == "n")
echo "<td> </td>\n";
else
echo "\t";
}
}
cell($row_count_total, $row_hours_total, $row_frais_total, $csv, $decompte);
if ($csv == "n")
echo "</tr>\n";
else
echo "\r\n";
$grand_count_total += $row_count_total;
$grand_hours_total += $row_hours_total;
$grand_frais_total += $row_frais_total;
$grand_moyenh_total = round($row_hours_total/$row_count_total);
$grand_moyenf_total = round($row_frais_total/$row_count_total);
}
while (list($room_key) = each($room_hash)) $rooms[] = $room_key;
sort($rooms);
reset($name_hash);
while (list($name_key) = each($name_hash)) $names[] = $name_key;
// foreach ($name_hash as $name_key) $names[] = $name_key;
sort($names);
$n_rooms = sizeof($rooms);
$n_names = sizeof($names);
// On affiche uniquement pour une sortie HTML
if ($csv == "n")
{
if ($sumby=="1")
$premiere_cellule = "Paroisse";
else if ($sumby=="5")
$premiere_cellule = "Type";
else if ($sumby=="6")
$premiere_cellule = "Utilisateur";
else if ($sumby=="7")
$premiere_cellule = "Jour";
else if ($sumby=="8")
$premiere_cellule = "Semaine";
else if ($sumby=="9")
$premiere_cellule = "Mois";
else
$premiere_cellule = grr_sql_query1("select fieldname from grr_overload where id='$sumby'");
echo "<hr /><h1>Comptage des réservations : (nombre) heures / frais </h1><table border=2 cellspacing=4>\n";
if ($sumby=="1")
echo "<tr><td class=\"BL\" align=left><b>".$premiere_cellule." \ Mois</b></td>\n";
else
echo "<tr><td class=\"BL\" align=left><b>".$premiere_cellule." \ Salle</b></td>\n";
}
for ($c = 0; $c < $n_rooms; $c++)
{
if ($csv == "n")
echo "<td class=\"BL\" align=left><b>$rooms[$c]</b></td>\n";
else
echo "$rooms[$c]\t";
$col_count_total[$c] = 0;
$col_hours_total[$c] = 0.0;
$col_frais_total[$c] = 0;
}
if ($csv == "n")
echo "<td class=\"BR\" align=right><br><b>Total</b></td></tr>\n";
else
echo "Total\t\r\n";
$grand_count_total = 0;
$grand_hours_total = 0;
$grand_frais_total = 0;
for ($r = 0; $r < $n_names; $r++)
{
$row_count_total = 0;
$row_hours_total = 0.0;
$row_frais_total = 0;
$name = $names[$r];
if ($csv == "n")
echo "<tr><td class=\"BR\" align=right><b>$name</b></td>\n";
else
echo "$name\t";
for ($c = 0; $c < $n_rooms; $c++)
{
$room = $rooms[$c];
if (isset($count[$room][$name]))
{
$count_val = $count[$room][$name];
$hours_val = $hours[$room][$name];
$frais_val = $frais[$room][$name];
cell($count_val, $hours_val, $frais_val, $csv, $decompte);
$row_count_total += $count_val;
$row_hours_total += $hours_val;
$row_frais_total += $frais_val;
$col_count_total[$c] += $count_val;
$col_hours_total[$c] += $hours_val;
$col_frais_total[$c] += $frais_val;
} else {
if ($csv == "n")
echo "<td> </td>\n";
else
echo "\t";
}
}
cell($row_count_total, $row_hours_total, $row_frais_total, $csv, $decompte);
if ($csv == "n")
echo "</tr>\n";
else
echo "\r\n";
$grand_count_total += $row_count_total;
$grand_hours_total += $row_hours_total;
$grand_frais_total += $row_frais_total;
$grand_moyenh_total = round($row_hours_total/$row_count_total);
$grand_moyenf_total = round($row_frais_total/$row_count_total);
}
J'ai modifié les foreach de la manière suivante :
// while (list($room_key) = each($room_hash)) $rooms[] = $room_key;
foreach ($room_hash as $room_key=>$room_val) $rooms[] = $room_val;
// while (list($name_key) = each($name_hash)) $names[] = $name_key;
foreach ($name_hash as $name_key=>$name_val) $names[] = $name_val;
sans changement
giludo
// while (list($room_key) = each($room_hash)) $rooms[] = $room_key;
foreach ($room_hash as $room_key=>$room_val) $rooms[] = $room_val;
// while (list($name_key) = each($name_hash)) $names[] = $name_key;
foreach ($name_hash as $name_key=>$name_val) $names[] = $name_val;
sans changement
giludo
ça y est, c'est bon avec :
foreach ($room_hash as $room_key=>$room_val) $rooms[] = $room_key;
et
foreach ($name_hash as $name_key=>$name_val) $names[] = $name_key;
MERCI
foreach ($room_hash as $room_key=>$room_val) $rooms[] = $room_key;
et
foreach ($name_hash as $name_key=>$name_val) $names[] = $name_key;
MERCI
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir, j'ai un autre souci avec la ligne :
while ( list( $lib, $pos ) = each ($tab) )
Il semble que le remplacement par :
foreach ($colonnes as list($lib, $pos))
ne fonctionne pas correctement.
la commande
$texte = $tab[$lib];
provoque le message :
Clé de tableau non définie « »
description des tables :
$colonnes { ["Date et Heure"]=> int(31) ["Fin"]=> int(14) ["Réservation"]=> int(78) ["Salle"]=> int(43) ["Montant"]=> int(20) }
$tab { ["Date et Heure"]=> string(16) « 06/01/22 15:00 » ["Fin"]=> string(5) « 16:45 » ["Réservation"]=> string(1) " " ["Salle"]=> string(11) « Saint André " ["Montant"]=> string(8) « 230.00 " }
Merci de votre aide
while ( list( $lib, $pos ) = each ($tab) )
Il semble que le remplacement par :
foreach ($colonnes as list($lib, $pos))
ne fonctionne pas correctement.
la commande
$texte = $tab[$lib];
provoque le message :
Clé de tableau non définie « »
description des tables :
$colonnes { ["Date et Heure"]=> int(31) ["Fin"]=> int(14) ["Réservation"]=> int(78) ["Salle"]=> int(43) ["Montant"]=> int(20) }
$tab { ["Date et Heure"]=> string(16) « 06/01/22 15:00 » ["Fin"]=> string(5) « 16:45 » ["Réservation"]=> string(1) " " ["Salle"]=> string(11) « Saint André " ["Montant"]=> string(8) « 230.00 " }
Merci de votre aide
Merci jordan45 pour ton message, mais ce n'est pas le même cas que ma précédente demande : il s'agit de récupérer les 2 colonnes de la table, comme c'était dèjà le cas avec la commande each.
Dans la documentation, ce cas est prévu
Merci pour tes lumières
giludo
;
Dans la documentation, ce cas est prévu
Merci pour tes lumières
giludo
;