Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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打印问题的答案?_Php_Postgresql_Foreach_While Loop - Fatal编程技术网

如何使用PHP打印问题的答案?

如何使用PHP打印问题的答案?,php,postgresql,foreach,while-loop,Php,Postgresql,Foreach,While Loop,如何在foreach或while循环中使用以下示例数据? 我通过运行 $answers = pg_fetch_all ( $result ); 样本数据 [0]=> array(3) { ["answer"]=> string(7) "This is the answer" ["username"]=> string(5) "roope" ["

如何在
foreach
while
循环中使用以下示例数据?

我通过运行

$answers = pg_fetch_all ( $result );
样本数据

[0]=>
  array(3) {
    ["answer"]=>
    string(7) "This is the answer"
    ["username"]=>
    string(5) "roope"
    ["was_sent_at_time"]=>
    string(26) "2009-08-20 23:30:46.200017"
  } 
  --- cut  ---
  [3]=>
  array(3) {
    ["answer"]=>
  --- cut ----
但是,我不确定这是否是提取数据的最佳方式,因为我不确定如何从上述格式提取数据。我没有成功地运行:

1. #1是我从资源中获取数据的唯一方法。 我试过两种方法都没有成功

2. 这种方式没有给出任何输出,这是令人惊讶的,因为示例数据显示每个答案都有相应的字段

foreach( $answers as $quess ) {
  $an = $quess['answer'];
  $name = $quess['username'];
  $time = $quess['was_sent_at_time'];
}
您有一个二维数组:
数组[0]包含数组
数组[0][0]是一个值数组
数组[0][1]是一个值数组
……

因此,foreach循环通过第一个(或容器)数组。foreach中的每个子值也是一个数组(数组[0][0]、数组[0][1]等)。因此,要访问各个值,必须以数组样式访问它们:array['index']=value

您有一个二维数组:
数组[0]包含数组
数组[0][0]是一个值数组
数组[0][1]是一个值数组
……


因此,foreach循环通过第一个(或容器)数组。foreach中的每个子值也是一个数组(数组[0][0]、数组[0][1]等)。因此,要访问各个值,您必须以数组样式访问它们:array['index']=value。

这就是您执行foreach循环的方式

foreach ( $answers as $answer ){
  echo $answer['answer']
  echo $answer['username'];
  echo $answer['was_sent_at_time'];
}
而while循环

while ( $answer_row = pg_fetch_array( $result, NULL, PGSQL_ASSOC ) ) {
    echo $answer_row['username'];
    echo $answer_row['was_sent_at_time'];
    echo $answer_row['answer'];  
}
请注意,区别在于foreach循环基本上按顺序将数组中的每个元素分配给另一个变量。这是一种包装

for($i=0;$i<count($arr);$i++) {
    $value = $arr[$i];
}

for($i=0;$i这就是foreach循环的实现方式

foreach ( $answers as $answer ){
  echo $answer['answer']
  echo $answer['username'];
  echo $answer['was_sent_at_time'];
}
而while循环

while ( $answer_row = pg_fetch_array( $result, NULL, PGSQL_ASSOC ) ) {
    echo $answer_row['username'];
    echo $answer_row['was_sent_at_time'];
    echo $answer_row['answer'];  
}
请注意,不同之处在于foreach循环基本上是按顺序将数组中的每个元素分配给另一个变量

for($i=0;$i<count($arr);$i++) {
    $value = $arr[$i];
}

对于($i=0;$i),因为您对键(即答案号)不感兴趣,所以可以省略foreach参数第二部分的前半部分。下面是正确的方法#1:

pg_fetch_array
是一个棘手的问题,因为它需要设置第三个可选参数来获取按列名而不是位置索引的数据。因为第二个参数也是可选的,所以必须给它一个值才能添加第三个参数。第二个参数是行索引,所以给它一个索引变量:

$i = 0;
while ($answer_row = pg_fetch_array($result, $i ++, PGSQL_ASSOC)) {
    echo $answer_row['username'];
    echo $answer_row['was_sent_at_time'];
    echo $answer_row['answer'];  
}

尝试一下,看看它是否有效。

因为您对键(即答案号)不感兴趣,所以可以省略foreach参数第二部分的前半部分。下面是正确的方法#1:

pg_fetch_array
是一个棘手的问题,因为它需要设置第三个可选参数来获取按列名而不是位置索引的数据。因为第二个参数也是可选的,所以必须给它一个值才能添加第三个参数。第二个参数是行索引,所以给它一个索引变量:

$i = 0;
while ($answer_row = pg_fetch_array($result, $i ++, PGSQL_ASSOC)) {
    echo $answer_row['username'];
    echo $answer_row['was_sent_at_time'];
    echo $answer_row['answer'];  
}

试试看它是否有效。

$quess是$answer中每个值的临时值-这是foreach的工作方式-对于x中的每个值,它将一个副本放在临时值y中。$quess是$answer中每个值的临时值-这是foreach的工作方式-对于x中的每个值,它将一个副本放在临时值y中。