[英]How can I print out the answers for a question with PHP?
如何通过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 ----
但是,我不确定这是否是提取数据的最佳方法,因为我不确定如何从上述格式中提取数据。 我运行失败:
foreach ( $answers as $answers[] => $answers['answer'] ){
echo $answers['answer']
echo $answers['username'];
echo $answers['was_sent_at_time'];
}
#1是我从资源中获取数据的唯一方法。 我尝试#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参数第二部分的前半部分。 这是执行#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'];
}
试试看,看看是否可行。
foreach( $answers as $quess ) {
$an = $quess['answer'];
$name = $quess['username'];
$time = $quess['was_sent_at_time'];
}
您有一个二维数组:
Array [0]保存数组
Array [0] [0]是值的数组
Array [0] [1]是值的数组
......
因此,foreach在第一个(或容器)数组中循环。 foreach内部的每个子值也是一个数组(array [0] [0],array [0] [1]等)。 因此,要访问各个值,必须以数组样式访问它们:array ['index'] = value。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.