2012-04-18 49 views
0

想知道是否有任何改進可以加快這個數組?如何改進這個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; 
     } 
    } 

} 
+0

你有有重複$的機會數據[「products_id」] – Pete 2012-04-18 06:19:27

+0

你有沒有想過使用一個數據庫呢? – bardiir 2012-04-18 06:21:05

+0

我正在從數據庫中讀取數據,並且想在輸出爲excel之前正確格式化數據。直接查詢數據庫可能會更慢(資源密集) – 2012-04-18 06:23:07

回答

0
  1. 可以構建數組$測試[]作爲字典(用戶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

+0

當我檢索數據時,$ search = $ products_id。「_」。$ colname; $ test [$ search] ['products_extra_fields_value'],php警告我注意:未定義索引: – 2012-04-18 06:53:30

+0

嘗試,只有$ test [$ search],如果仍然有未定義的索引,那麼所有的值可能沒有加載,否則使用var_dump來分析數據並檢查子數組是否具有正確的結構 – Pete 2012-04-18 07:02:25

+0

仍未定義,我檢查了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