如何改进这个php数组的数据检索?
想知道是否有任何改进可以加快这个数组?如何改进这个php数组的数据检索?
测试数组的行数是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;
}
}
}
-
可以构建数组$测试[]作为字典(用户products_id。 “_”。products_extra_fields_name作为密钥)
$测试[$数据[ 'products_id']。 “_” 。$ data ['products_extra_fields_name']] = 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'] );
一旦你这样做,你可以直接索引数组,既然你已经有了列名称和products_id
当我检索数据时,$ search = $ products_id。“_”。$ colname; $ test [$ search] ['products_extra_fields_value'],php警告我注意:未定义索引: – 2012-04-18 06:53:30
尝试,只有$ test [$ search],如果仍然有未定义的索引,那么所有的值可能没有加载,否则使用var_dump来分析数据并检查子数组是否具有正确的结构 – Pete 2012-04-18 07:02:25
仍未定义,我检查了var dump,看起来没问题。 array(4){[“products_id”] => string(4)“1343”[“products_extra_fields_id”] => string(1)“1”[“products_extra_fields_name”] => string(7)“Product”[“products_extra_fields_value “] => string(52)”萤石链“} 提示:未定义的索引:1343_作者 – 2012-04-18 07:24:54
我不认为这是你需要编辑阵列。如果你从数据库中检索这些数据,那么你必须加快你的sql查询。此外,你可以添加索引到你的领域。 这是一个你可以参考的链接。 http://www.catswhocode.com/blog/10-sql-tips-to-speed-up-your-database
你有有重复$的机会数据[“products_id”] – Pete 2012-04-18 06:19:27
你有没有想过使用一个数据库呢? – bardiir 2012-04-18 06:21:05
我正在从数据库中读取数据,并且想在输出为excel之前正确格式化数据。直接查询数据库可能会更慢(资源密集) – 2012-04-18 06:23:07