Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP foreach循环中?_Php_Loops_Foreach_Operators - Fatal编程技术网

在PHP foreach循环中?

在PHP foreach循环中?,php,loops,foreach,operators,Php,Loops,Foreach,Operators,在foreach循环中是否可能有AND 比如说, foreach ($bookmarks_latest as $bookmark AND $tags_latest as $tags) 简短回答:不。你可以把书签和标签放在一个数组中,然后迭代 或者你也可以这样做: reset($bookmarks_latest); reset($tags_latest); while ((list(, $bookmark) = each($bookmarks_latest)) && (list(

在foreach循环中是否可能有AND

比如说,

foreach ($bookmarks_latest as $bookmark AND $tags_latest as $tags)

简短回答:不。你可以把书签和标签放在一个数组中,然后迭代

或者你也可以这样做:

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

简短回答:不。你可以把书签和标签放在一个数组中,然后迭代

或者你也可以这样做:

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;
}
你不能那样做

但是你可以

<?php
foreach($keyval as $key => $val) {
  // something with $key and $val
}
你不能那样做

但是你可以

<?php
foreach($keyval as $key => $val) {
  // something with $key and $val
}

没有,但有很多方法可以做到这一点,例如:

reset($tags_latest);
foreach ($bookmarks_latest as $bookmark){
    $tags = current($tags_latest); next($tags_latest);
    // here you can use $bookmark and $tags
}

没有,但有很多方法可以做到这一点,例如:

reset($tags_latest);
foreach ($bookmarks_latest as $bookmark){
    $tags = current($tags_latest); next($tags_latest);
    // here you can use $bookmark and $tags
}
不,不,不是

您必须手动写出一个循环,该循环使用索引或内部指针同时遍历两个数组。

否。否,不是


您必须手动写出一个循环,该循环使用索引或内部指针同时遍历两个数组。

您始终可以使用循环计数器访问第二个数组中的同一个索引,就像在foreach循环中访问一样(我希望这是有意义的)

例如:-

$i = 0;
foreach($bookmarks_latest as $bookmark){
   $result['bookmark'] = $bookmark;
   $result['tag'] = $tags_latest[$i];
   $i++;
}
这应该实现你想要做的,否则就使用dark_charlie建议的方法


在PHP5>=5.3中,您可以使用。

您可以始终使用循环计数器访问第二个数组中的索引,就像在foreach循环中访问一样(我希望这是有意义的)

例如:-

$i = 0;
foreach($bookmarks_latest as $bookmark){
   $result['bookmark'] = $bookmark;
   $result['tag'] = $tags_latest[$i];
   $i++;
}
这应该实现你想要做的,否则就使用dark_charlie建议的方法

在PHP 5>=5.3中,您可以使用。

是的,为了完整性:

foreach (array_combine($bookmarks_latest, $tags_latest) as $bookm=>$tag)
这将是获得你想要的东西的自然方式。但显然,只有当两个输入数组的长度完全相同时,它才起作用

(但是,使用单独的迭代键是更常见的方法。)

是的,为了完整性:

foreach (array_combine($bookmarks_latest, $tags_latest) as $bookm=>$tag)
这将是获得你想要的东西的自然方式。但显然,只有当两个输入数组的长度完全相同时,它才起作用


(不过,使用单独的迭代键是更常见的方法。)

我不知道在什么情况下需要这样做。但你做不到。你想做什么?参考另一个问题:我看不出什么样的情况需要这样做。但你做不到。你想做什么?参考另一个问题:请你提供一个例子。请你提供一个例子。谢谢,这正是我想要的。谢谢,这正是我想要的。