【问题标题】:Using do-while loop in an associative array in php [closed]在php的关联数组中使用do-while循环[关闭]
【发布时间】:2011-12-24 11:39:58
【问题描述】:

我对如何在 php.ini 的关联数组中使用 do-while 循环有点困惑。我没有从 0 开始的有序索引,所以我不能像 C 或 Java 那样简单地迭代

注意 :: 我特别想要做一些行为......即loop 在开始时至少会执行一次

【问题讨论】:

  • 你想完成什么?也许你应该只使用foreach ($array as $key=>$value) {}
  • 在 PHP 中,foreach 的使用频率通常远高于索引 for 循环(如在 for ($i=0; $i<10; $i++) 中)
  • 这应该回答你的问题:stackoverflow.com/questions/1951690/…
  • @user401445 你没有得到我。您不能笼统地询问 do-while 是否可以与索引数组一起使用。当然可以,这取决于你需要做什么。我们需要看看你试图解决什么问题,特别是在代码中。例如,您可以根据 array_keys() 的返回或许多其他可能性来评估条件。
  • -1 没有发布您遇到问题的实际代码。

标签: php arrays associative-array


【解决方案1】:

您可以使用array_keys 函数。

$keys = array_keys($assocArray);
if(!empty($keys)) do{
  $key = array_pop($keys);
  // ...
}while(!empty($keys));

如果你真的想使用 do-while 循环。但是如果一个简单的 while 循环对你有好处,那么第一个 if 就不是必需的了:

$keys = array_keys($assocArray);
while(!empty($keys)){
  $key = array_pop($keys);
  // ...
};

编辑:

如果您真的希望循环至少运行一次:

$keys = array_keys($assocArray);
do{
  $key = array_pop($keys);
  if($key===NULL){
    // first (and last) run for an empty array
  }else{
    // ...
  }
}while(!empty($keys));

【讨论】:

    【解决方案2】:

    如果你只需要迭代整个数组,你应该使用foreach:

    foreach($array as $index => $value)
    {
      // do some stuff
    }
    

    如果你不关心数组的索引:

    foreach($array as $value)
    {
      // do some stuff
    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-24
      • 2018-01-16
      • 2014-11-24
      • 1970-01-01
      • 2018-04-28
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多