如何在php中减少数组遍历中的循环

如何在php中减少数组遍历中的循环,php,arrays,foreach,Php,Arrays,Foreach,如何减少代码中的循环数。当前代码是一个虚拟示例,但由于我正在从URL中抓取内容,它包含大约6K-7K li遍历以删除数据,所以速度是我应用程序中的一个问题 1) 我使用简单的PHP DOM解析器从URL中抓取数据,所以我首先关心的是,它是否是遍历DOM以抓取数据(大约6K-7K li元素)的相关方法,或者file\u get\u contents()是否合适 2) 如何减少下面提到的代码中的循环数,我尝试过,但失败了- 我的全部密码 <?php $arrunsort = array

如何减少代码中的循环数。当前代码是一个虚拟示例,但由于我正在从URL中抓取内容,它包含大约6K-7K li遍历以删除数据,所以速度是我应用程序中的一个问题

1) 我使用简单的PHP DOM解析器从URL中抓取数据,所以我首先关心的是,它是否是遍历DOM以抓取数据(大约6K-7K li元素)的相关方法,或者
file\u get\u contents()
是否合适

2) 如何减少下面提到的代码中的循环数,我尝试过,但失败了-

我的全部密码

<?php
$arrunsort     = array('ab','ad','ar','cd','cb','sc','si','wa','za');
$prevLabel     = array();
$currLabelarr  = array();
$newarr        = array();
foreach( $arrunsort as $sortelem )
{
    $currLabel = substr($sortelem, 0, 1);
    if( $currLabel !== $prevLabel )
    {
        //echo '<h2>',strtoupper($currLabel),'</h2>','<br>';
        $currLabelarr[] = $currLabel;
        $prevLabel = $currLabel;
    }
}

foreach($currLabelarr as $arrkeymatch) 
{
    $newarr[$arrkeymatch] = array();
    $i = 0;
    foreach($arrunsort as $value) 
    {
        if( $arrkeymatch == (substr($value, 0, 1)) )
        {
            //echo '<li>',$value,'</li>';
            $newarr[$arrkeymatch][$i] = $value;
            $i++; 
        }   
    }
}


foreach($newarr as $key=> $val)
{
    echo "<h3>",$key,'</h3>';
    echo '<ul>';
    foreach($val as $myval)
    {
        echo '<li>',$myval, '</li>';
    }
    echo '</ul>';
}

为什么不直接使用
DomDocument
加载所有需要的项目?3个循环根本不算“过度”当你处理解析时…@MarcB,那么上面的代码可以使用它…或者它可以优化以减少页面加载时间?@MarkB我的另一个想法是将数据保存在文本文件中,因为网页内容不会太频繁地更改(可能是一年)但是我正在废弃的页面上的数据太多了,所以我正在寻找每一个选项,因为页面加载时间有点长。如果内容没有“频繁”更改,请不要加载您在每个请求上解析的远程内容。e、 如果它每小时只更改一次,那么对它执行完整的获取/解析运行是毫无意义的。获取一次并在本地缓存。