当前位置: 首页 > 知识库问答 >
问题:

在PHP的foreach循环中增加数组元素?[副本]

贺子昂
2023-03-14

请考虑以下代码:

<?php
$arr = array();
$arr['b'] = 'book';
foreach($arr as $key=>$val) {
   print "key=>$key\n";
   if(!isset($arr['a']))
      $arr['a'] = 'apple';
}
?>

请不要告诉我,我可以做这个任务与数字为基础的索引与计数的帮助。

共有1个答案

农诚
2023-03-14

Foreach在循环之前复制数组的结构(阅读更多内容),因此您不能更改数组的结构并等待循环中的新元素。您可以使用while而不是foreach

$arr = array();
$arr['b'] = 'book';

reset($arr);
while ($val = current($arr))
    {
    print "key=".key($arr).PHP_EOL;
    if (!isset($arr['a']))
        $arr['a'] = 'apple';
    next($arr);
    }

或者将ArrayIterator与foreach一起使用,因为ArrayIterator不是数组。

$arr = array();
$arr['b'] = 'book';

$array_iterator = new ArrayIterator($arr);


foreach($array_iterator as $key=>$val) {
   print "key=>$key\n";
   if(!isset($array_iterator['a']))
      $array_iterator['a'] = 'apple';
}
 类似资料:
  • 问题内容: 我想遍历一个数组,以检查是否存在一个值。如果该值确实存在,我想删除包含它的元素。 我有以下代码: 找到值后,我不知道如何删除该元素。如何删除? 我必须使用这个问题。可能有替代方法,欢迎您共享它们。 问题答案: 如果您还获得了密钥,则可以这样删除该项目:

  • 问题内容: 我正在使用一些参数编写SQL查询创建器。在Java中,仅通过检查当前数组位置和数组长度,就可以很容易地从for循环中检测数组的最后一个元素。 在PHP中,它们具有用于访问数组的非整数索引。因此,您必须使用foreach循环遍历数组。当您需要做出一些决定时(在我的情况下,在构建查询时附加或/和参数),这将成为问题。 我确信必须有一些标准的方法来做到这一点。 您如何在PHP中解决此问题?

  • 我想我这样做是完全错误的,但是我想在foreach循环运行的数组的末尾添加一个数组。 例如,这是开始结果 这是im使用的代码 期望的最终结果

  • 问题内容: print_r($ samplearr)为包含3个项目的数组打印以下内容: 我想将它们放到HTML表中,所以我正在做一个foreach,但是没有达到我的期望: 正在返回: 这将是我想要的第一个输出: 要获得4722,我需要使用什么功能代替key($ item)? 问题答案: 尝试这个:

  • 我在forEach循环中有一个select元素列表,并且只想要位于索引0的第一个元素。 这个元素将有一个不同的方法,我试图防止重复的代码,我不想只为这个元素创建另一个方法,我试图解决它,但似乎我不成功。

  • 问题内容: 我正在尝试使用for循环在数组内创建一个数组-这是我的代码: 不幸的是,这给了我一个 “解析错误:语法错误,意外的T_CONSTANT_ENCAPSED_STRING,预期为’)’” 对于该行: 对于出了什么问题,我有些茫然-非常感谢您的帮助。$ clients是在其他地方定义的,所以这不是问题。 问题答案: 那是无效的语法。您必须首先构建数组的“父”部分。然后使用foreach循环添