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

时间:2012-04-18 06:16:50

标签: php arrays loops

想知道是否可以对这个阵列进行任何改进?

测试数组行数是40,000条记录。

循环完成需要很长时间。

样本值:

$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;
        }
    }

}

2 个答案:

答案 0 :(得分:0)

我认为这不是您需要编辑的数组。如果要从数据库中检索这些数据,则必须加快sql查询速度。此外,您可以为您的游戏添加索引。 这是您可以参考的链接。 http://www.catswhocode.com/blog/10-sql-tips-to-speed-up-your-database

答案 1 :(得分:0)

  1. 您可以将数组$ test []构建为字典(user products_id。“_”。products_extra_fields_name as key)

    $ test [$ data ['products_id']。“_”。$ data ['products_extra_fields_name']] = array(         'products_id'=> $数据[ 'products_id'],         'products_extra_fields_id'=> $数据[ 'products_extra_fields_id'],         'products_extra_fields_name'=> $数据[ 'products_extra_fields_name'],         'products_extra_fields_value'=> $数据[ 'products_extra_fields_value'] );

  2. 执行此操作后,您可以直接索引数组,因为您已经拥有列名和products_id