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

改了一下,还是数据循环后面就多了一条数据,也就是多循环出来一条


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];

        // 构建单个数据片段,注意这里不添加额外的"@"
        $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;
}

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

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-06-13 20:44
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    在您的代码中,问题出现在循环构建$quanbu字符串的过程中。由于在每次循环中都向$quanbu追加了@字符,循环结束后,字符串末尾多出了一个不必要的@字符。要解决这个问题,您可以在循环结束后再进行一次检查,如果$quanbu@结尾,则去除它。

    下面是修改后的代码:

    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];
    
            // 构建单个数据片段
            $dataFragment = $xuhao . '//' . $timu . '//' . $my_daan . '//' . $zq_daan . '//' . $duicuo;
    
            // 将数据片段追加到$quanbu,但首次追加时不添加"@"
            if ($quanbu !== '') {
                $quanbu .= '@';
            }
            $quanbu .= $dataFragment;
    
            // 构建数组元素
            $arr[$i] = array(
                'xuhao'   => $xuhao,
                'timu'    => $timu,
                'my_daan' => $my_daan,
                'zq_daan' => $zq_daan,
                'duicuo'  => $duicuo,
                'quanbu'  => $dataFragment . '@'
            );
            $i++;
        }
    
        // 去除最后一个"@",如果存在
        if (substr($quanbu, -1) === '@') {
            $quanbu = substr($quanbu, 0, -1);
        }
    
        // 将处理后的$quanbu添加到数组中
        $arr['quanbu_z'] = $quanbu;
    
        return $arr;
    }
    

    这段代码中,我做了以下修改:

    1. $quanbu初始化为空字符串。
    2. 在循环中,只有在$quanbu不为空时才追加@
    3. 循环结束后,使用substr函数检查$quanbu字符串的最后一个字符是否是@,如果是,则去除它。
    4. 将处理后的$quanbu添加到数组$arr中。

    关于参考资料,您可以查看PHP官方文档中关于字符串操作的部分,特别是substrsubstr_replace函数的用法:

    希望这些修改能帮助您解决问题。如果您还有其他问题或需要进一步的帮助,请随时告诉我。

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥15 MATLAB解决问题
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享