和在PHP foreach循环?
是否有可能在foreach循环中有AND?和在PHP foreach循环?
例如,
foreach ($bookmarks_latest as $bookmark AND $tags_latest as $tags)
您可以随时使用循环计数器访问第二个数组中的相同索引,就像您在foreach循环中访问的那样(我希望这很有意义)。
例如: -
$i = 0;
foreach($bookmarks_latest as $bookmark){
$result['bookmark'] = $bookmark;
$result['tag'] = $tags_latest[$i];
$i++;
}
那应该达到什么样的你正在尝试做的,否则使用由dark_charlie sugested的办法。
谢谢,正是我正在寻找的。 – ritch 2011-06-12 19:06:55
简短的回答:没有。您始终可以将书签和标签放入一个数组中并对其进行迭代。
或者你也可以这样做:
reset($bookmarks_latest);
reset($tags_latest);
while ((list(, $bookmark) = each($bookmarks_latest)) && (list(,$tag) = each($tags_latest)) {
// Your code here that uses $bookmark and $tag
}
编辑:
为一个阵列的解决方案所要求的例子:
class BookmarkWithTag {
public var $bookmark;
public var $tag;
}
// Use the class, fill instances to the array $tagsAndBookmarks
foreach ($tagsAndBookmarks as $bookmarkWithTag) {
$tag = $bookmarkWithTag->tag;
$bookmark = $bookmarkWithTag->bookmark;
}
请你可以提供一个这样的例子。 – ritch 2011-06-12 18:51:04
你不能做到这一点。
,但你可以
<?php
foreach($keyval as $key => $val) {
// something with $key and $val
}
上面的例子中的作品真的很好,如果你有一个hash
类型的数组,但如果你已经在数组中嵌套值我建议你:
或选项2
<?php
foreach ($keyval as $kv) {
list($val1, $val2, $valn) = $kv;
}
不,但有很多方法可以做到这一点,例如:
reset($tags_latest);
foreach ($bookmarks_latest as $bookmark){
$tags = current($tags_latest); next($tags_latest);
// here you can use $bookmark and $tags
}
不,不是。
您必须手动写出一个使用索引或内部指针同时遍历两个数组的循环。
是的,对于完整性:
foreach (array_combine($bookmarks_latest, $tags_latest) as $bookm=>$tag)
这将是得到你想要的本机方式。但它只有在两个输入数组具有完全相同的长度时才有效。 (使用单独的迭代密钥是更常见的方法,但是。)
我不明白什么样的情况会要求这样。但你不能这样做。你想做什么? – Rob 2011-06-12 18:50:38
请参考此其他问题:http://*.com/questions/6313340/codeigniter-passing-arguments-from-view-to-controller – ritch 2011-06-12 18:53:44