如果我的问题很愚蠢,请原谅我。但请有人告诉我或建议我如何解决这个问题。其实我有大型多维数组
像这样 $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个数组值。当我使用此数组时,如果foreach条件和循环条件,则需要超过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个字符串。
答案 0 :(得分:0)
我们可以使用array_key_exists()代替for循环中的else,也可以使用三元运算符。
答案 1 :(得分:0)
您可以使用array_walk函数来减少foreach循环...