Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何改进这种php数组数据检索?_Php_Arrays_Loops - Fatal编程技术网

如何改进这种php数组数据检索?

如何改进这种php数组数据检索?,php,arrays,loops,Php,Arrays,Loops,想知道是否可以做任何改进来加速此阵列 测试数组行计数为40000记录 这个循环花了很长时间才完成 样本值: $test[] = array( 'products_id' => $data['products_id'], 'products_extra_fields_id' => $data['products_extra_fields_id'], 'products_extra_fields_name' => $data['products_extra_

想知道是否可以做任何改进来加速此阵列

测试数组行计数为40000记录

这个循环花了很长时间才完成

样本值:

$test[] = array(
    'products_id' => $data['products_id'],
    'products_extra_fields_id' => $data['products_extra_fields_id'],
    'products_extra_fields_name' => $data['products_extra_fields_name'],
    'products_extra_fields_value' => $data['products_extra_fields_value']
    );



foreach productid
{

  $colname="column name";


    //this inside for loop making thing very slow
    foreach ($test as $key1 => $row1)
    {
        $w= $row1['products_id'];
        $x= $row1['products_extra_fields_id'];
        $y= $row1['products_extra_fields_name'];
        $z= $row1['products_extra_fields_value'];

        if( ($w==$products_id) && ($y== $colname) )
        {
            $wantedvalue=$z;
            break;
        }
    }

}

我认为这不是您需要编辑的数组。如果要从数据库检索这些数据,则必须加快sql查询的速度。此外,您还可以向feild添加索引。 这是一个你可以参考的链接。

  • 您可以将数组$test[]构建为字典(用户产品\u id。“\u“.products\u extra\u fields\u name作为键)

    $test[$data['products\u id']。“'.'.$data['products\u extra\u fields\u name']]=array( 'products_id'=>$data['products_id'], “products\u extra\u fields\u id”=>$data[“products\u extra\u fields\u id”], “products\u extra\u fields\u name”=>$data[“products\u extra\u fields\u name”], “products\u extra\u fields\u value”=>$data[“products\u extra\u fields\u value”] );


  • 完成此操作后,您可以直接为数组编制索引,因为您已经有了列名和products\u id

    您是否有可能拥有重复的$data['products\u id']您是否考虑过使用数据库进行此操作?我正在从数据库中读取它,并希望在导出到excel之前将其正确格式化。直接查询数据库可能会更慢(资源密集型)是的,少于5条重复记录。我添加了一个答案,请检查,这将在我检索数据时起作用,$search=$products\u id.“\u”。$colname$test[$search]['products\u extra\u fields\u value'],php警告我注意:未定义的索引:try,只有$test[$search],如果仍然得到未定义的索引,那么可能没有加载所有值,否则使用var\u dump分析数据并检查子数组是否具有正确的结构仍然未定义,我检查了var dump,看起来没问题。数组(4){[“products\u id”]=>string(4)“1343”[“products\u extra\u fields\u id”]=>string(1)“1”[“products\u extra\u fields\u name”]=>string(7)“products”[“products\u extra\u fields\u value”]=>string(52)“萤石串”}注意:未定义的索引:1343\u Authorthen问题在于$test[$search],您能粘贴$test的var\u转储吗