在php中的foreach循环中增加数组元素?

Increasing array elements while in foreach loop in php?

本问题已经有最佳答案,请猛点这里访问。

考虑下面的代码:

1
2
3
4
5
6
7
8
9
10
<?php
$arr = array();
$arr['b'] = 'book';
foreach($arr as $key=>$val) {
   print"key=>$key
"
;
   if(!isset($arr['a']))
      $arr['a'] = 'apple';
}
?>

它不是一个"系统"。如何用foreach(哈希表的作品,每一对导线的元素的数组)。如果列表是实施为什么不能在运行时添加更多的我吗?

请告诉我我可以做任务以帮助索引值进行计数。


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

1
2
3
4
5
6
7
8
9
10
11
$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不是数组。

1
2
3
4
5
6
7
8
9
10
11
12
$arr = array();
$arr['b'] = 'book';

$array_iterator = new ArrayIterator($arr);


foreach($array_iterator as $key=>$val) {
   print"key=>$key
"
;
   if(!isset($array_iterator['a']))
      $array_iterator['a'] = 'apple';
}

为了能够使用&;直接修改循环中位于$value之前的数组元素。在这种情况下,将通过引用分配值。

http://cz2.php.net/manual/en/control-structures.foreach.php


我想你需要继续存储数组元素

尝试

1
2
3
4
5
6
7
8
9
10
11
<?php
$arr = array();
$arr['b'] = 'book';
foreach($arr as $key=>$val) {
   print"key=>$key
"
;
   if(!isset($arr['a']))
      $arr['a'][] = 'apple';
}
print_r($arr);
?>

如何使用for和realtime array_keys()?

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$arr = array();
$arr['b'] = 'book';

for ($x=0;$x<count($arr); $x++) {
   $keys = array_keys($arr);
   $key = $keys[$x];
   print"key=>$key
"
;
   if(!isset($arr['a']))
      $arr['a'] = 'apple';
}

如果要检查数组中是否存在键,请使用array_key_exists函数

如:

1
2
3
4
5
6
7
8
<?php
$arr = array();
$arr['b'] = 'book';
print_r($arr);          // prints Array ( [b] => book )
if(!array_key_exists("a",$arr))
      $arr['a'] = 'apple';
print_r($arr);         // prints Array ( [b] => book [a] => apple )
?>

如果要使用isset条件,请尝试如下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$arr = array();
$arr['b'] = 'book';
$flag = 0;
foreach($arr as $key=>$val) {
   print"key=>$key
"
;
   if(!isset($arr["a"]))
   {
        $flag = 1;
   }
}
if(flag)
{
     $arr['a'] = 'apple';
}

print_r($arr);


试试这个:

你会得到价值观。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$arr = array();
$arr['b'] = 'book';
foreach($arr as $key=>$val) {
   print"key=>$key
"
;
   if(!isset($arr['a']))
      $arr['a'] = 'apple';
}

echo '[cc lang="php"]';
print_r($arr);

?>

输出:

1
2
3
4
5
6
key=>b
[cc lang="php"]Array
(
    [b] => book
    [a] => apple
)