我有这段代码:
foreach ($row as $result) {
if (empty($row[28])) {
$string28 = '';
} else {
$string28 = '<div class="add_img">
<h1>Connexion</h1>
<img src="images/' . $row[28] . '.jpeg">
</div>';
}
}
foreach ($row as $result) {
if (empty($row[30])) {
$string30 = '';
} else {
$string30 = '<div class="add_img">
<h1>Fixation</h1>
<img src="images/' . $row[30] . '.jpeg">
</div>';
}
}
foreach ($row as $result) {
if (empty($row[31])) {
$string31 = '';
} else {
$string31 = '<div class="add_img">
<h1>Schéma</h1>
<img src="images/' . $row[31] . '.jpeg">
</div>';
}
}
$applications = array($string28, $string30, $string31);
if (empty($applications)) {
$vide = "<h1>Pas D'Application Pour Ce Produit</h1>";
}
我想在这里说的是:如果所有变量都是空的,请告诉我:
Pas D'Application Pour Ce Produit
(翻译:此产品无申请)
但是当我使用print_r函数时,它告诉我数组没有数据可以处理。
我需要帮助。
并感谢所有先进的
答案 0 :(得分:1)
您的foreach
循环错误。您正在使用整个数组而不是foreach
循环中使用的元素。
您已使用
foreach ($row as $result) { //You are doing something with $row }
而是正确使用
foreach ($row as $result) { //Do something with $result }
希望有所帮助:)
答案 1 :(得分:1)
您没有在foreach循环中正确访问行。使用foreach($ row作为$ result)时,需要将数组元素称为$ result,而不是row。如果需要标识指定数组键,可以使用foreach($ row as $ key =&gt; $ result)指定。
例如,在你的第一个循环中你应该使用它:
$string28 = ''; //Initialize your variable so can be used after the foreach loop exits
foreach ($row as $key => $result) {
if($key == 28 && empty($result[$key]) {
$string28 = '';
} else {
$string28 = '<div class="add_img"><h1>Connexion</h1><img src="images/'.$result[$key].'.jpeg">
}
}
重复脚本中的其他循环。
修改
是的,您可以设置一个foreach循环,它将遍历所有变量并为您创建变量。根据您的问题,如果您没有任何应用程序,则会显示错误消息。您可能希望做的只是根据该标准设置一个标志。你可以这样做:
$noApps = true;
$applications = array();
foreach($row as $key => $result) {
if(isset($result[$key]) && empty($result[$key])) {
$applications[$key] = '<div class="add_img"><h1>Connexion</h1><img src="images/'.$result[$key].'.jpeg'>;
$noApps = false;
}
}
if($noApps) {
echo "<h1>Pas D'Application Pour Ce Produit</h1>";
} else {
print_r($applications); //For viewing/debugging purposes
}
答案 2 :(得分:0)
你的设计很糟糕。您基本上是重复相同功能3次。
您的while循环不起作用,因为您在其中使用$row
而不是$result
变量。
第二点是,$string28, $string30, $string31
被创建为while loops
中写入的if条件中的局部变量。一旦控件退出"if"
循环,这些变量就不算什么了。要解决此问题,请尝试在代码的起始位置初始化这些数据以清空$string28 =""
之类的数据。
但是,我建议您先查看代码的结构。