weixin_41244451 2024-06-14 09:42 采纳率: 92.9%
浏览 0
已结题

这个循环里的数组多了一个$arr['quanbu_z'],但是这个又不能没有,请问要怎么弄才能只循环[1][2],不循环数组$arr['quanbu_z']


function timu_list($timulibiao)
{
    $arrtimulibiao=explode("@", $timulibiao);
    $arr = array();
    $i=1;
    $quanbu='';
    foreach ($arrtimulibiao as $value) {
        if($i<=count($arrtimulibiao))
        {
            $arrvalue=explode("//", $value);
            $xuhao      =$i+1;
            $timu       =$arrvalue[1];
            $my_daan    =$arrvalue[2];
            $zq_daan    =$arrvalue[3];
            $duicuo     =$arrvalue[4];
            $dataFragment = $xuhao . '//' . $timu . '//' . $my_daan . '//' . $zq_daan . '//' . $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']  =$dataFragment.'@';
            $quanbu.=$dataFragment.'@';
            $i++;
        }
    }
    if (!empty($quanbu)) {
        $arr['quanbu_z']=substr($quanbu, 0, -1);
    }
    
    return $arr;
}
$timu_list=timu_list($timulibiao);
$smarty->assign("timu_list",                $timu_list);
$smarty->display('oa/oa_zxsxl_jieguo.htm');//这个循环传到这个页面

print_r($timu_list);exit;
测试打印出来是这样的:
Array ( [1] => Array ( [xuhao] => 2 [timu] => +9 -7 -2 [my_daan] => 2 [zq_daan] => 0 [duicuo] => × [quanbu] => 2//+9 -7 -2//2//0//×@ ) [2] => Array ( [xuhao] => 3 [timu] => +9 -7 -1 [my_daan] => 1 [zq_daan] => 1 [duicuo] => √ [quanbu] => 3//+9 -7 -1//1//1//√@ ) [quanbu_z] => 2//+9 -7 -2//2//0//×@3//+9 -7 -1//1//1//√ )
也就是这个循环里的数组多了一个$arr['quanbu_z'],但是这个又不能没有,请问要怎么弄才能只循环[1][2],不循环数组$arr['quanbu_z']
  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-14 09:42
    关注

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

    为了解决这个问题,你可以在遍历数组前检查键名,确保不会处理'quanbu_z'这个特殊键。在PHP中,你可以使用array_keys()函数获取数组的所有键名,然后通过in_array()函数检查当前键是否是我们想要排除的键。然而,更简单的方法是在循环时直接检查键名。

    下面是一个修改后的代码示例,它将排除'quanbu_z'键,只处理数字键(即[1], [2], 等等):

    // 假设 $timu_list 已经由 timu_list() 函数返回
    foreach ($timu_list as $key => $value) {
        // 检查 $key 是否为数字,从而排除 'quanbu_z'
        if (is_numeric($key)) {
            // 这里进行你需要的操作,例如访问 $value['xuhao'], $value['timu'] 等
            echo "处理序号:{$value['xuhao']}, 题目:{$value['timu']}\n";
        }
    }
    

    这样,你就可以只针对数字键进行操作,而跳过'quanbu_z'。这不仅保持了'quanbu_z'的存在,还确保了它不会被错误地处理。

    如果你需要在HTML模板中处理这个逻辑,可以采用类似的条件判断,确保只渲染你想要的数据部分。例如,在Smarty模板引擎中,你可以使用{foreach}标签,并结合条件语句来实现:

    {foreach from=$timu_list key=k item=i}
        {if is_numeric(k)}
            <!-- 这里显示 $i['xuhao'], $i['timu'] 等 -->
            <p>处理序号:{$i.xuhao}, 题目:{$i.timu}</p>
        {/if}
    {/foreach}
    

    这样,即使$timu_list包含'quanbu_z'键,模板也只会渲染数字键对应的数据。

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

报告相同问题?

问题事件

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