gpt4 book ai didi

php - 处理大型数组时如何提高php的执行速度?

转载 作者:可可西里 更新时间:2023-10-31 23:46:38 28 4
gpt4 key购买 nike

如果我的问题很愚蠢,请原谅我。但请有人告诉我或建议我如何解决此问题。实际上我有一个大的多维数组

像这样

   $array_value =  Array
(
[0] => Array
(
[0] => sdfsf
[1] => fghbfh
[2] => sgddfsg
[3] => ujmnm
[4] => jkluik
..
..
..
..
..
..
[150] => jhbjhbjh
)
[1] => Array
(
[0] => 44062
[1] => 45503
[2] => 44062
[3] => fdg
[4] => dfgdg
..
..
..
..
..
..
[150] => jhbjhbjh
)
....
....
....
[590] => Array
(
[0] => 44062
[1] => 45503
[2] => 44062
[3] => fdg
[4] => dfgdg
..
..
..
..
..
..
[150] => jhbjhbjh
)
)

600 个数组里面有 600 个数组,我有 150 个数组值。当我使用此数组时,if foreach 条件和 for 循环条件需要超过 5 分钟才能完成执行。

我在循环中使用了两个 foreach 循环和一个 for 循环以及 4 个方法函数。执行需要超过 5 分钟。我需要更快地加载。

我不知道如何增加脚本的执行时间或如何处理这个数组。请有人建议或帮助我如何处理这个问题。谢谢你。

        foreach ($Final_Data as $line_no => $val) {
foreach($val as $col_name=> $col_value) {

if ($col_name === 'tid' || $col_name === 'pid' || $col_name === 'local_list_id')
{
if(empty($col_value)) {
$null_error[] = "empty value in ".$col_name;
}elseif( $col_value !== null && !is_numeric( $col_value) ) {
$where_Error[] ="non numeric value in ".$col_name." = ".$col_value;
}
$where_content[]= $col_name . "= '" . $col_value."'";

if($col_name =='pid'){
$pid = $col_value;
}

}elseif(!empty($col_name) && in_array($col_name, $update))
{

if($col_name=="country"){
...
}elseif($col_name=="state"){
...
}elseif($col_name=="district"){
....
}elseif($col_name=="post_category")
{
....


$CategoryList=array();
if(count($locationArr) > 0 && count(locationCategory($locationArr)) > 0)
{
.....
}




if(strlen($col_value)==0 || empty($col_value))
{
......
}elseif(ValidateLength($col_name,$columnValue,$maxl) === false || VulnerableExists($columnValue)===false)
{
if(ValidateLength($col_name, $columnValue,$maxl) === false){
....
}
if(VulnerableExists($columnValue)===false){
....
}
}else
{
......



foreach($post_cat as $Category){



if(get_cat_ID($Category) == 0) {
if(!in_array($Category, $CategoryList)){
.....
}
}
}




/*****Category Mapping Start****/
if(count($post_cat)>0 && isset($pid) && !empty($pid) && count($CategoryList)==0)
{
$postCat = array();
$ex_catid = array();

$post_categories = get_the_category( $pid );

foreach($post_categories as $category) {

if(in_array($category->name, $post_cat)){
.....
}
}



$array_dif = array_diff($post_cat,$postCat);




foreach($array_dif as $pc){
......
if($cat_Id!=0) array_push($ex_catid,$cat_Id);
}
if(count($array_dif)!=0){
......
}

}elseif(count($CategoryList)>0)
{

}
}
}

$columnName=$col_name;
$columnValue=mysqli_real_escape_string($link, $col_value);



if(ValidateLength($col_name,$col_value,$maxl)===false)
{
......
}elseif(VulnerableExists($col_value)===false)
{
......
}else
{
......
}



}
}


die();



// echo implode(", " ,$where_content)."<br>";
// echo implode(", " ,$update_content);

if(!empty($val['pid']) && !empty($val['tid']) && !empty($val['local_list_id']) ) {
if(count($vuln_error) <= 0 && count($length_error)<=0 && count($null_error)<=0 && count($CategoryList)<=0){
....

}else
{
....

}
}


//die();
unset($where_content);
unset($update_content);
unset($null_error);
unset($vuln_error);
unset($length_error);
unset($CategoryList);
echo "<br><br>";


}

我只给出了我的代码的基本结构。这就是我的整个脚本在 forloop 和 foreach 条件中有很多 if 条件的方式。但所有条件都是强制性的,因为它是为了验证和一些操作。请有人帮我解决这个问题。谢谢

这个数组中最重要的事情和问题是值是 1000 个字符和超过 1000 个字符。这里我只给出了 4 位数字和 5 个字符串。

最佳答案

我们可以使用 array_key_exists() 代替 for 循环中的 if else,也可以使用三元运算符。

关于php - 处理大型数组时如何提高php的执行速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33500611/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com