J'ai ce morceau de code:php while condition addtitional ne se comporte pas comme prévu
$i=0;
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){
*(line 133)* if (array_search("SUCCESS", $row) != false) {
echo "<tr class='success'>";
}
elseif (array_search("ERROR", $row) != false) {
echo "<tr class='danger'>";
}
else {
echo "<tr>";
}
foreach ($row as $rowData) {
if ($rowData == "SUCCESS") {
echo "<td><span class='mdi-navigation-check'></span></td>";
}
elseif ($rowData == "ERROR") {
echo "<td><span class='mdi-navigation-close'></span></td>";
}
else {
if (gettype($rowData) == "object") {
echo "<td>" . $rowData->format('Y-m-d H:i:s') . "</td>";
} else {
echo "<td>" . $rowData . "</td>";
}
}
}
if (isset($row["cMsgID"])) {
echo "<td><a href='#' onclick='window.open(\"/monitor/templates/history.php?cMsgID=" . $row["cMsgID"] . "\", \"history\", \"status=1, toolbar=1 width=800px, height=400px\")'>History</a></td>";
}
echo "</tr>";
$i++;
}
Mais quand j'ajoute une deuxième condition à la boucle tandis que la variable $row
devient un booléen true
:
$i
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC) && $i < 10){
*same code as above*}
Premier message d'erreur PHP: Avertissement: array_search() s'attend à ce que le paramètre 2 soit un tableau, un booléen donné dans C: \ wamp32bit \ www \ monitor \ templates \ mainContent.php sur la ligne 133
J'ai cherché ce problème mais tous étaient liés à une mauvaise syntaxe ou aux conditions qui s'excluaient mutuellement.
Pourquoi cela se produit-il?
Vous définissez i $ à 0, donc 0 est inférieur à 10. Ceci est vraiment vrai! BTW vous devriez poster tout le code dans la boucle. –
@bub Mais pourquoi cela écrase-t-il la variable '$ row'? Il devrait écrire le tableau à '$ row' et voir si' $ i' est aussi plus petit que 10, non? – gergalyb
S'il vous plaît poster le code de boucle entière –