PHP nasıl bir soruya cevap yazdırabilirsiniz?

3 Cevap php

How can you use the following sample data either with a foreach veya while döngü?

Ben çalıştırarak aşağıdaki örnek verileri almak

$answers = pg_fetch_all ( $result );

Sample data

[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 ----

Ben yukarıdaki biçiminden veri ayıklamak nasıl emin değilim Ancak, ben, bu veri ayıklamak için en iyi yolu olup olmadığından emin değilim. Ben başarısız koştum:

1.

foreach ( $answers as $answers[] => $answers['answer'] ){
      echo $answers['answer']
      echo $answers['username'];
      echo $answers['was_sent_at_time'];
}

#1 is the only way by which I have got data out of the resource. I have tried the #2 way unsuccessfully.

2.

while ( $answer_row = pg_fetch_array( $result ) ) {
    echo $answer_row['username'];
    echo $answer_row['was_sent_at_time'];
    echo $answer_real['answer'];  
}

Örnek veri, her cevabın ilgili alanları olduğunu bana gösteriyor beri bu şekilde, şaşırtıcı bir çıkış olarak, bir şey vermez.

3 Cevap

Bu foreach döngü yapmak nasıl

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

ve while döngüsü ...

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'];  
}

Fark foreach döngüsü temelde amacıyla başka bir değişkene bir dizideki her öğe atar olduğunu unutmayın. Bu etrafında sarıcı naziksiniz

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

Ve ayrıca bu pg_fetch_array varsayılan bir ilişkisel dizi döndürür. Bunu yapmak için ona PGSQL_ASSOC parametre geçmek zorunda.

Eğer (cevap sayısının yani) anahtarında ilgilenmiyoruz çünkü, foreach argümanlar ikinci bölümünün ilk yarısını atlayabilirsiniz. İşte 1. yapmak için doğru yolu:

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

Bu sütun adı yerine konumuna göre endeksli verileri geri almak için ayarlanacak bir üçüncü opsiyonel bir argüman gerekiyor, çünkü pg_fetch_array zor bir canavar. İkinci argüman, aynı zamanda isteğe bağlı olduğundan, bunu üçüncü argüman eklemek edebilmek için bir değer vermek zorundayız. İkinci argüman, bir satır dizini, yani o bir dizin değişkeni verin:

$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'];  
}

Bu denemek ve görmek eğer o inşaat.

foreach( $answers as $quess ) {
  $an = $quess['answer'];
  $name = $quess['username'];
  $time = $quess['was_sent_at_time'];
}

You have an two dimensional array:
Array[0] holds arrays
Array[0][0] is an array of values
Array[0][1] is an array of values
......

Yani, foreach ilk (veya konteyner) dizi üzerinden döngü. Foreach içinde her alt değeri de bir dizi (dizi [0] [0], dizi [0] [1], vb). Yani tek tek değerleri erişmek için, sen dizi tarzda onlara erişmek gerekir: array ['index'] = değer.