【问题标题】:How to use variables within a PHP array如何在 PHP 数组中使用变量
【发布时间】:2013-08-10 03:16:54
【问题描述】:

我有这个代码:

    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 函数时,它告诉我该数组没有要处理的数据。
我需要帮助。
感谢所有高级人员

【问题讨论】:

  • 你在哪里使用 print_r。空函数检查数组是否为空,而不是每个单独的变量
  • 那么如何将它用于所有变量?
  • 遍历它们并单独检查它们是否为空
  • 像你一样循环遍历数组,并使用 empty() 或 isset() 检查数组值。 isset() 实际上会告诉你这样的变量是否已经初始化并且不为空。

标签: php arrays variables


【解决方案1】:

您没有在 foreach 循环中正确访问您的行。使用 foreach($row as $result) 时,您需要将数组元素称为 $result,而不是 row。如果您需要识别指定的数组键,您可以使用 foreach($row as $key => $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
}

【讨论】:

  • 在 foreach 循环之外设置你的 $stringXX 变量。我认为您存在范围问题,因为变量在 foreach 循环内初始化(并死亡)。我已经编辑了我的答案以向您展示我的意思。
  • 什么需要审核?请详细说明。
  • 因为我有 34 个变量,我可以对所有变量使用一个 foreach 循环吗?
【解决方案2】:

您的 foreach 循环是错误的。您使用的是整个数组,而不是 foreach 循环中使用的元素。

你用过

foreach ($row as $result) { //你正在用$row做一些事情 }

正确的用法是

foreach ($row as $result) { //用$result做一些事情 }

希望对你有帮助:)

【讨论】:

    【解决方案3】:

    你的设计看起来很糟糕。您实际上是在重复 相同的功能 3 次。 您的 while 循环不起作用,因为您在其中使用 $row 而不是 $result 变量。 第二点是,$string28, $string30, $string31 被创建为您在while loops 中编写的 if 条件内的局部变量。一旦控件退出"if" 循环,这些变量就什么都不是了。要解决此问题,请尝试在代码的开头将它们初始化为空数据,例如$string28 =""

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

    【讨论】:

      猜你喜欢
      • 2014-03-17
      • 2013-05-16
      • 1970-01-01
      • 2020-08-01
      • 2016-11-15
      • 1970-01-01
      • 2013-08-09
      • 2015-02-06
      • 2016-06-16
      相关资源
      最近更新 更多