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(哈希表的作品,每一对导线的元素的数组)。如果列表是实施为什么不能在运行时添加更多的我吗?
请告诉我我可以做任务以帮助索引值进行计数。
- "它不显示‘A’",什么意思?
- 无法重现
- @里克什:请在这里找到它
- 我想是空的。
- @RIKESH见标准输出部分
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
) |
- 我接受这样其他人会从中得到帮助…
- 你读过这个问题吗?这就是:为什么在循环期间添加新键没有效果(而不是如何输出数组)
- 请再看一遍这个问题