如何在PHP数组中使用变量

时间:2013-08-10 03:16:54

标签: php arrays variables

我有这段代码:

    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函数时,它告诉我数组没有数据可以处理。
我需要帮助。
并感谢所有先进的

3 个答案:

答案 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 =""之类的数据。

但是,我建议您先查看代码的结构。