看下这个代码会出错,循环中增删数组元素,Notice: Undefined offset:

Naola2001 2015-04-23 10:08:19
运行会出错,提示
Notice: Undefined offset: 2
因为那个数组元素已经删除了。

实现相同的功能。正确的写法应该是啥呢?


代码精简如下。


	$cows = array(1);  

for ($j=0;$j<10;$j++) //循环10
{

foreach ($cows as $key => $value)
{
$cows[$key]++;
if ($cows[$key] == 5) // ==5 销毁
{
unset($cows[$key]);
}
if ($cows[$key] == 3) //==3 增加一个元素
{
$cows[] = 1;
}

}
...全文
174 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Naola2001 2015-04-23
  • 打赏
  • 举报
回复
$cows[$key] 都有值的,初始均为1
xuzuning 2015-04-23
  • 打赏
  • 举报
回复
if (isset($cows[$key]) && $cows[$key] == 3)
智商众筹 2015-04-23
  • 打赏
  • 举报
回复
用isset先判断?
Naola2001 2015-04-23
  • 打赏
  • 举报
回复
我知道出错的原因,我要解决我程序意图的正确方法。
引用 4 楼 xuzuning 的回复:
$cows = array(1);  
 
for ($j=0;$j<10;$j++)  //循环10
{
     
    foreach ($cows as $key => $value)
    {
        $cows[$key]++;            
        if ($cows[$key] == 5)    // ==5 销毁
        {
            unset($cows[$key]);
            echo $key; //这里加一句,你就可以看到出错的原因了    
        }
        if ($cows[$key] == 3)    //==3 增加一个元素
        {
            $cows[] = 1;
        }           
    }
}
当 unset($cows[$key]); 执行后,$cows[$key] 就不存在了。你还 if ($cows[$key] == 3) 自然要报错的 所以你要么检查 $cows[$key] 的存在,要么就放到 else 分支去
        if ($cows[$key] == 5)    // ==5 销毁
        {
            unset($cows[$key]);
        }
        else if ($cows[$key] == 3)    //==3 增加一个元素
        {
            $cows[] = 1;
        }           
xuzuning 2015-04-23
  • 打赏
  • 举报
回复
$cows = array(1);  
 
for ($j=0;$j<10;$j++)  //循环10
{
     
    foreach ($cows as $key => $value)
    {
        $cows[$key]++;            
        if ($cows[$key] == 5)    // ==5 销毁
        {
            unset($cows[$key]);
            echo $key; //这里加一句,你就可以看到出错的原因了    
        }
        if ($cows[$key] == 3)    //==3 增加一个元素
        {
            $cows[] = 1;
        }           
    }
}
当 unset($cows[$key]); 执行后,$cows[$key] 就不存在了。你还 if ($cows[$key] == 3) 自然要报错的 所以你要么检查 $cows[$key] 的存在,要么就放到 else 分支去
        if ($cows[$key] == 5)    // ==5 销毁
        {
            unset($cows[$key]);
        }
        else if ($cows[$key] == 3)    //==3 增加一个元素
        {
            $cows[] = 1;
        }           

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧