我试图通过使用do {....}从数组中生成pull key => value对,而{在数组中有值。

我正在使用一个函数来查询mysql,然后在数组中插入所有值

function table_array($query) {

    $table_array = array();
    $data_fetched = false;
    while ($array = mysql_fetch_assoc($query)) {
        if (!$data_fetched) {
            foreach ($array as $key => $value) {
                $table_array[$key] = $value;
                //$data_fetched = true;
                } 
            }
        }
    return $table_array;
}

然后我使用另一个循环从数组中提取数据

function get_table($table_array) {


    $header_written = false;
    echo "<table border=1>";

    if ($table_array) {

        do {
            echo "<tr>";
            foreach ($table_array as $columns => $values) {
                echo "<td> {$values} </td>";
                }
                echo "</tr>";

        }while ($table_array);

        }
        echo "</table>";
    }

然而,这导致我的循环无限运行,为什么我不能使用它就像我在mysql_fetch_assoc为真时一样。

我尝试使用一个标志,但只有一个记录被提取后才会停止运行。

===============>>#1 票数:2

你真正需要的是两个foreach循环。 外部迭代遍历行,内部遍历列:

echo "<table>";
// Iterates over rows
foreach ($table_array as $row) {
  echo "<tr>";
  // Iterates over columns (table cells)
  foreach ($row as $col=>$value) {
    echo "<td>{$value}</td>";
  } 
  echo "</tr>";
}
echo "</table>";

虽然您的提取过程有效,但可以简化和改进。 您不需要foreach$table_array分配列。 您可以使用[]语法简单地附加整个获取的行。 不确定$data_fetched的用途是什么,所以我也删除了它

 while ($array = mysql_fetch_assoc($query)) {
        // Use the [] syntax to append the whole row onto $table_array
        // No need to add each column of the fetched row separately
        $table_array[] = $array;        
  }

最后,它不能像你设置你做的那样工作的原因是迭代常规数组与从MySQL结果集中获取不相似。 当没有行保留时,fetch调用最终将返回FALSE。 除非您在迭代数组时主动从数组中删除元素,并最终删除空数组,否则它将始终求值为布尔值TRUE。

===============>>#2 票数:0

你需要使用foreach($array as $key => $value){ ... }或者do{ ... } while ($array)

您不应该同时使用两者,因为您只有一组数据要循环。 我会坚持使用foreach,因为它更安全,并且可以完全满足您的需求。

如果您觉得需要使用do / while,那么每次进入循环时都需要从$ table_array中弹出一个值。 这样,$ table_array在某些时候将变为空。 目前,在您的代码中,$ table_array始终是满的,因此while循环会无休止地继续。

  ask by Moshe translate from so

未解决问题?本站智能推荐:

2回复

如何在同一函数中向单个数组添加更多值?

当我尝试以下代码时,我只会得到第一个输出。 我想将所有输出附加到数组self::$results以便同一函数将返回该数组,但是运行脚本后,该函数将返回该数组,但仅返回第一个输出。 也就是说,它仅附加了第一个输出。
1回复

如何总计我的数组以使其成为一个值并仍然保留在数组中

我根据用户选择的天数来获取价值的功能如下: public function graphheheByDate(Request $request, $companyID) { $companyID = $this->decode($companyID); $match = Di
1回复

While在数组中循环并在while期间前进然后前进?

是的,所以最近几天我一直在为此烦恼。 所以我有这三个字符串 它们正在通过imagettfbbox()设置其高度和宽度。 我希望GD图像中的输出为Some text Some more text Even more text ,所以基本上我希望它们全部在一行上。 所以我试图根
2回复

如何在数组中循环数组(动态导航)

我有一些物品的数组。 每个数组可以有(也可以没有)一个子数组,也有一些项目。 如何在循环中调用子数组? 很难描述,这是代码。 我知道代码/语法不正确,但是语法应该可以阐明我的问题: 第一个foreach循环有效。 但是,如何访问信息和运动子数组?
2回复

如何在数组中扩展变量以使周围的数组有效

我有一个我什至不知道如何描述的问题。 我需要构建一个动态数组,并将其包含在另一个数组中。 让我扩展。 这是我的代码: 这不会产生错误,只是无法以任何方式限制数据返回。 如果我打印$ myarrayarray变量,则会得到此结果,以进行结合了油漆和加压缸的搜索: 如果我将其
4回复

如何在PHP的主数组中插入数组以使其成为2d数组?

我有以下3个数组: 我想将这些数组放到一个将产生这种形式的数组中: 我尝试了array_combine和array_merge,但是它们显示出与我想要产生的结果不同的结果。 请帮忙。
4回复

在数组中使用存储在变量中的数组时,停止父级[0]

下面的代码以这种方式输出数组: 我们不希望该部分用红色突出显示,如何删除它?
1回复

在PHP中遍历值时如何在数组中放置多个值

好吧,所以我试图调整一个数组并将其解码为json,当前它会像这样解码该数组; 码: 我想做的是在哪里写; 领域。 我想对此进行爆炸并替换字段。 在fields数组中使用fieldId。 像这样 现在由于某种原因,它只会做最后一个键,我希望它遍历所有显示“字段”的键
1回复

存储在数组中时在for循环中切换

我有一个CSV文件,我获取了每一行数据,然后将它们存储在不同的数组中,该函数可以正常工作,但是使用一个函数比使用switch语句和简单赋值更为有效,但是,因为我正在分配数组,我不确定该怎么做。我也看过类似的问题,但是在我的情况下,我不能将函数用作数组,因为我要分配给不同的变量,感谢有人可以给我更
1回复

如何在循环中将数据存储在数组中

我正在尝试使用格式如下的数据: 每个元素将包含5个子元素,每个子元素将分别包含5个子元素。 现在,我正在尝试将数据推入数组: 即使数据不可用,它也应存储else值。 目前,我遇到了错误: 未定义的偏移量:2 帮助我拥有JSON格式中提到的正确数据格式。