Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP foreach语句拆分名称MySQL数据库_Php_Mysql_Foreach - Fatal编程技术网

PHP foreach语句拆分名称MySQL数据库

PHP foreach语句拆分名称MySQL数据库,php,mysql,foreach,Php,Mysql,Foreach,我有一个与MySQL数据库交互的PHP脚本。在我的数据库中,我有多个列,如: “临时状态”, “临时颜色”, “临时状态”, “临时颜色”, “临时状态”, “临时颜色” 等 “临时状态”, “温度50度颜色” 所有50条记录在“临时xxx_状态”下包含一个名称或将为空且 在“temp\u xxx\u color”下显示一种颜色 我可以手动显示50条记录的所有颜色,如 if ($user['temp_0_state'] == "") { } else { echo . $use

我有一个与MySQL数据库交互的PHP脚本。在我的数据库中,我有多个列,如:

“临时状态”, “临时颜色”, “临时状态”, “临时颜色”, “临时状态”, “临时颜色” 等 “临时状态”, “温度50度颜色”

所有50条记录在“临时xxx_状态”下包含一个名称或将为空且 在“temp\u xxx\u color”下显示一种颜色

我可以手动显示50条记录的所有颜色,如

  if ($user['temp_0_state'] == "") {
  } else {
     echo . $user['temp_0_color'] . ;
     }
  if ($user['temp_1_state'] == "") {
  } else {
     echo . $user['temp_1_color'] . ;
     }
  if ($user['temp_2_state'] == "") {
  } else {
     echo . $user['temp_2_color'] . ;
     }

  if ($user['temp_50_state'] == "") {
  } else {
     echo . $user['temp_50_color'] . ;
     }
<>但是这将更容易,并且减少PHP代码的数量,在0和50之间的所有记录(0<n<50)的列名中间使用一个PROACH语句。
如何分割名称并在下划线之间的数字0到50上使用foreach语句?

我没有测试,但您可以尝试一下:

for ($x = 0; $x <= 50; $x++) {

    $column = 'temp_'.$x.'_state';
    $color  = 'temp_'.$x.'_color';
    if ($user[$column] == "") {

    } else {
        echo $user[$color];
    }

}

在这种情况下,for语句会更方便,因为根据您的描述,您已经知道最大记录数:

for ($i = 0; $i <= 50; $i++) {
    if (!empty($user['temp_'.$i.'_state'])) {
        echo $user['temp_'.$i.'_color'];
    }
}

请查看官方的循环文档以了解更多信息:

OP正在使用状态和颜色列no,这很有效!但是,在同一代码中,我还必须添加一些其他功能。如果$user[$column]={您应该更新,如果$user[$column]!={所以你不需要写else行。@Dacobah你不知道OP是否需要它……动态列名似乎不是最好的方法,tbh;这感觉像是一个可以用不同的数据库结构避免的解决方法。我期待着这个答案……问题是,我正在使用其他人的数据库,无法更改我想这可能是有原因的——这就是为什么我只是评论而不是试图回答;