PHP如何同时获取数组的键和值

36
我想要通过一个数组运行 for 循环,并为数组中的每个元素创建锚点元素,其中键是文本部分,值是 URL。
请问我该如何做呢?
谢谢。

1
http://de.php.net/manual/en/control-structures.foreach.php - Gordon
2
关于“for”而不是“foreach”,你可能可以使用next()遍历数组,并使用key()获取键。 - pastapockets
4个回答

60
这样应该可以。
foreach($yourArray as $key => $value) {
    //do something with your $key and $value;
    echo '<a href="' . $value . '">' . $key . '</a>';
}

编辑:根据Capsule的评论 - 改为单引号。


1
还有13分钟我才能将其设置为正确答案,但我会这样做。 - Francisc
2
如果您想在循环中编辑值,请将 $value 更改为 &$value。然后,您在循环中对 $value 所做的任何更改都会影响原始数组。有关更多信息,请参见 PHP 的引用页面:http://php.net/manual/en/language.references.php - Zach Rattner
1
在HTML代码中使用单引号会破坏某些文档类型(如XHTML)的验证,因此应避免使用。 - Capsule
@Capsule - 老实说,我甚至不知道那是这种情况。我来自ASP.NET背景,你只需假设页面不会验证,所以我从未费心去检查这样的事情。最终我出于纯粹的方便起见在PHP中使用了上述语法。 - Marek Karbarz
@Marek 顺便说一下,在 PHP 中,如果使用单引号,则速度更快,因为它不会尝试解释字符串中的任何变量或特殊字符。所以你应该绝对使用它;-)当查看 HTML 源代码时,出于可读性考虑,我也会连接 . "\n",即使我绝对不建议在 PHP 脚本中间使用 echo。 - Capsule

29

对于某些特定的目的,您可能希望知道数组的当前键(key)而不必进行循环。在这种情况下,您可以执行以下操作:

reset($array);
echo key($array) . ' = ' . current($array);

上面的示例将显示您的数组的第一条记录的键和值。

以下函数并不是特别常见,但在非常特殊的情况下可能非常有用:

key($array);     //Returns current key
reset($array);   //Moves array pointer to first record
current($array); //Returns current value
next($array);    //Moves array pointer to next record and returns its value
prev($array);    //Moves array pointer to previous record and returns its value
end($array);     //Moves array pointer to last record and returns its value

我认为这就是SPL的做法。谢谢。 - Francisc

2

像这样:

$array = array(
    'Google' => 'http://google.com',
    'Facebook' => 'http://facebook.com'
);

foreach($array as $title => $url){
    echo '<a href="' . $url . '">' . $title . '</a>';
}

1
在模板上下文中,它将是这样的:
<?php foreach($array as $text => $url): ?>
    <a href="<?php echo $url; ?>"><?php echo $text; ?></a>
<?php endforeach; ?>

不应该在 PHP 代码中编写 HTML 代码,因此避免回显大量的 HTML。

这并没有过滤任何内容,希望您的数组是干净的 ;-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接