1

そのため、配列を取得して値をループし、foreachステートメントで出力することに問題があります。

コード

<?php
$example = array("test" => "hello world" );

foreach ($example as $arr) {
  printf("<p>what do you have to say for yourself?</p><p>%s!</p>",$arr["test"]);
}

?>

出力を取得したい:

あなたはあなた自身のために何を言わなければなりませんか?

こんにちは世界!

代わりに

あなたはあなた自身のために何を言わなければなりませんか?

h!

なぜ1文字だけなのか?

どんな助けでも素晴らしいでしょう

ありがとう

4

4 に答える 4

5

foreach ループは既に配列の値を処理しているため、キーを使用して値を再度参照しないでください。

<?php
$example = array("test" => "hello world" );

foreach ($example as $key => $val) {
  printf("<p>what do you have to say for yourself?</p><p>%s!</p>",$val);
}

?>

コメントの他の例から、配置が非常に具体的であるため、ループを使用することはできません。代わりに、ループなしで具体的に各値を参照します。

$example = array(
    "first" => "Bob", 
    "last" => "Smith", 
    "address" => "123 Spruce st"
);
printf("<p>my name is %s %s and i live at %s</p>", 
    $example['first'], 
    $example['last'], 
    $example['address']
);
于 2012-09-11T17:33:48.483 に答える
1

おそらく、このように見ると役立つでしょう。

<?php 
$example = array("test" => "hello world", "foo" => "bar"); 

foreach ($example as $key => $val) { 
# option 1
    echo "<p>what do you have to say for yourself?</p><p>$key => $val</p>"; 
# option 2
    echo "<p>what do you have to say for yourself?</p><p>$key => $example[$key]</p>"; 
} 
?> 

それがどのように繰り返されるかを確認したら、ステートメントを printf() に戻すか、変数を使って何でもすることができます。

多次元配列がある場合は、キーをアドレス指定することで配列の次のレベルを参照できることに注意してください。

于 2012-09-11T17:52:55.337 に答える
0

Foreachは、配列に複数の要素があることを前提としています。echo $example['test']のように要素をエコーアウトするだけではない場合; ループ構造は必要ありません。複数の要素の場合:

$example = array('text'=>"what do you have to say for yourself?",'test' => "hello world" );

print_r($example);

foreach ($example as $value)  
printf("<p>%s!</p>",$value);

foreachは、配列要素の値を各ループの$valueという変数に割り当てています。わかる?

于 2012-09-11T17:49:29.770 に答える
0

連想配列をループすると、$arr各反復に値が設定されます。$ arrにインデックスを付けようとすると、実際には文字列にインデックスを付けているため、1文字になります。

于 2012-09-11T17:35:44.830 に答える