如何使用PHP打印出问题的答案?
如何通过foreach
或while
循环使用以下示例数据?如何使用PHP打印出问题的答案?
我通过运行
$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 ----
但是得到下面的示例数据,我不知道它是否是提取数据的最佳方式,因为我我不确定如何从上述格式中提取数据。我不成功地跑了:
foreach ($answers as $answers[] => $answers['answer']){
echo $answers['answer']
echo $answers['username'];
echo $answers['was_sent_at_time'];
}
#1是我所得到的数据进行资源的唯一途径。 我已经尝试了#2方式失败。
2.while ($answer_row = pg_fetch_array($result)) {
echo $answer_row['username'];
echo $answer_row['was_sent_at_time'];
echo $answer_real['answer'];
}
这种方式给出什么作为输出,这是令人惊讶的,因为所述样品的数据显示我,每个答案具有相应的字段。
这是你怎么做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];
}
而且,pg_fetch_array默认情况下不会返回关联数组。您必须将PGSQL_ASSOC参数传递给它才能做到这一点。
foreach($answers as $quess) {
$an = $quess['answer'];
$name = $quess['username'];
$time = $quess['was_sent_at_time'];
}
您有一个二维阵列:
数组[0]保存阵列
数组[0] [0]是值的阵列
数组[0] [1]是值的阵列
......
因此,foreach通过第一个(或容器)数组循环。 foreach中的每个子值也是一个数组(array [0] [0],array [0] [1]等)。因此,要访问各个值,您必须以数组样式访问它们:array ['index'] = value。
什么是“quess”? – 2009-08-20 23:12:33
$ quess是$ answer中每个值的临时值 - 这是foreach工作的方式 - 对于x中的每个值,它将临时值y放入一个副本。 – 2009-08-20 23:16:52
由于您对关键字(即答案编号)不感兴趣,因此可以省略foreach参数的第二部分的前半部分。这里是做#1的正确方法:
foreach ($answers as $answer) {
echo $answer['answer'];
echo $answer['username'];
echo $answer['was_sent_at_time'];
}
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'];
}
试试看看它是否有效。
谢谢你的回答! – 2009-08-21 00:34:01