weixin_41244451 2024-06-13 20:15 采纳率: 93.9%
浏览 1
已结题

加了这句,数据循环后面就多了一条数据


function timu_list($timulibiao,$index)
{
    $arrtimulibiao=explode("@", $timulibiao);
    $arr = array();
    $i=2;
    $quanbu='';
    foreach ($arrtimulibiao as $value) {
        $arrvalue=explode("//", $value);
        $xuhao      =$i;
        $timu       =$arrvalue[1];
        $my_daan    =$arrvalue[2];
        $zq_daan    =$arrvalue[3];
        $duicuo     =$arrvalue[4];
        if($duicuo=='√' || $duicuo=='×')
        {
            $arr[$i]['xuhao']   =$xuhao;
            $arr[$i]['timu']    =$timu;
            $arr[$i]['my_daan'] =$my_daan;
            $arr[$i]['zq_daan'] =$zq_daan;
            $arr[$i]['duicuo']  =$duicuo;
            $arr[$i]['quanbu']  =$xuhao.'//'.$timu.'//'.$my_daan.'//'.$zq_daan.'//'.$duicuo.'@';
            $quanbu.=$xuhao.'//'.$timu.'//'.$my_daan.'//'.$zq_daan.'//'.$duicuo.'@';
            $i++;
        }
    }
    $arr['quanbu_z']=substr_replace($quanbu, "", -1);//我要通过timu_list($timulibiao,$index)这个函数获取$quanbu.=$xuhao.'//'.$timu.'//'.$my_daan.'//'.$zq_daan.'//'.$duicuo.'@';,但是加了这句,数据循环后面就多了一条数据
    return $arr;
}

$arr['quanbu_z']=substr_replace($quanbu, "", -1);//我要通过timu_list($timulibiao,$index)这个函数获取$quanbu.=$xuhao.'//'.$timu.'//'.$my_daan.'//'.$zq_daan.'//'.$duicuo.'@';,但是加了这句,数据循环后面就多了一条数据,也就是多循环出来一条

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-13 20:15
    关注

    引自免费微信小程序:皆我百晓生

    从描述来看,问题出现在$quanbu字符串的构建与处理上。在每次循环中,$quanbu被连续追加数据,并且在每个数据片段后加上了一个多余的"@"字符。当尝试移除最后一个"@"时,似乎也引入了一个额外的数据循环。这可能是因为在循环结束后,$quanbu的值还被用作下一轮循环的起始点,或者是在某处重复调用了timu_list函数。

    为了解决这个问题,我们首先确保在构建$quanbu时不会留下多余的"@"。其次,要确保$quanbu的最终处理(即删除最后一个"@")不会影响到数据数组的构建。以下是一种修改后的代码实现,它应该可以解决上述问题:

    function timu_list($timulibiao)
    {
        $arrtimulibiao = explode("@", $timulibiao);
        $arr = array();
        $i = 2;
        $quanbu = ''; // 初始化为空字符串
    
        foreach ($arrtimulibiao as $value) {
            $arrvalue = explode("//", $value);
            $xuhao = $i;
            $timu = $arrvalue[1];
            $my_daan = $arrvalue[2];
            $zq_daan = $arrvalue[3];
            $duicuo = $arrvalue[4];
    
            if ($duicuo == '√' || $duicuo == '×') {
                // 构建单个数据片段,注意这里不添加额外的"@"
                $dataFragment = $xuhao . '//' . $timu . '//' . $my_daan . '//' . $zq_daan . '//' . $duicuo;
    
                // 将数据片段追加到$quanbu,但首次追加时不添加"@"
                if ($quanbu !== '') {
                    $quanbu .= '@';
                }
                $quanbu .= $dataFragment;
    
                $arr[$i]['xuhao'] = $xuhao;
                $arr[$i]['timu'] = $timu;
                $arr[$i]['my_daan'] = $my_daan;
                $arr[$i]['zq_daan'] = $zq_daan;
                $arr[$i]['duicuo'] = $duicuo;
                $arr[$i]['quanbu'] = $dataFragment . '@'; // 注意这里添加"@"是为了保持原始逻辑
                $i++;
            }
        }
    
        // 最终处理,去除最后一个"@"
        $arr['quanbu_z'] = substr_replace($quanbu, "", -1);
    
        return $arr;
    }
    

    关键修改点:

    • 在拼接$quanbu时,只有在非首次追加时才添加"@"。
    • 通过检查$quanbu是否为空来决定是否添加"@",这样可以避免在字符串开始时就添加多余的字符。

    这样修改后,$quanbu将只包含实际的数据片段,并且在最后正确地去除了多余的"@",而不会影响到数据数组的构建。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月14日
  • 已采纳回答 6月14日
  • 创建了问题 6月13日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗