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!

为什么只有单个字符?

任何帮助都会很棒

谢谢

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

$arr循环遍历您的关联数组是在每次迭代中放置一个值。当您尝试对 $arr 进行索引时,您实际上是在对字符串进行索引,因此是单个字符。

于 2012-09-11T17:35:44.830 回答
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 回答