2017-07-29 45 views
1

我爲PrestaShop 1.6創建了一個模塊。我無法在表格中獲取此模塊創建的列。我不知道什麼可能是錯的。 '$ fields'只佔用最後一列。 '$ result'就可以了。就好像PHP沒有創建索引一樣。爲什麼foreach在數組中只創建一個值?

public function getNewDescriptionFields() 
{ 
    $db = Db::getInstance(); 
    if(!$db) 
     return false; 

    $result = $db->ExecuteS('SHOW COLUMNS FROM '. _DB_PREFIX_ .'product_lang');     
    if(!$result) 
     return false; 

    $fields = array(); 
    foreach($result as $key => $field); 
    { 
     $fields[] = $field['Field']; 
    } 

    file_put_contents('/home/www/test4', var_export($fields, true)); 
    file_put_contents('/home/www/test3', var_export($result, true)); 
    $fields = preg_grep("/desc([0-9]?[0-9])_(name|text)/", $fields); 
    return $fields; 
} 

從TEST3(部分):

19 => 
    array (
    'Field' => 'desc4_text', 
    'Type' => 'text', 
    'Null' => 'YES', 
    'Key' => '', 
    'Default' => NULL, 
    'Extra' => '', 
), 
    20 => 
    array (
    'Field' => 'desc5_name', 
    'Type' => 'varchar(64)', 
    'Null' => 'YES', 
    'Key' => '', 
    'Default' => NULL, 
    'Extra' => '', 
), 
    21 => 
    array (
    'Field' => 'desc5_text', 
    'Type' => 'text', 
    'Null' => 'YES', 
    'Key' => '', 
    'Default' => NULL, 
    'Extra' => '', 
), 
    22 => 
    array (
    'Field' => 'desc6_name', 
    'Type' => 'varchar(64)', 
    'Null' => 'YES', 
    'Key' => '', 
    'Default' => NULL, 
    'Extra' => '', 
), 
    23 => 
    array (
    'Field' => 'desc6_text', 
    'Type' => 'text', 
    'Null' => 'YES', 
    'Key' => '', 
    'Default' => NULL, 
    'Extra' => '', 

從TEST3: array (0 => 'desc6_text',)

+2

刪除在的foreach行最後的分號,然後再試一次。我不確定$字段是如何在此之後定義的。 – jh1711

+2

即使在循環完成後,顯然$ key和$ field仍然保留。忽略我評論的第二句話。 Kamran的答案解釋了半問題。 – jh1711

+1

如果你不打算使用'$ key',不要在foreach循環中聲明它。你的正則表達式模式可以/應該是'/ desc \ d + _(name | text) – mickmackusa

回答

3

您使用;在foreach循環結束時,循環體首先結束;所以請刪除它。 代碼應該是這樣的的foreach

foreach($result as $key => $field) 
{ 
    $fields[] = $field['Field']; 
} 

Demo

相關問題