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',)
刪除在的foreach行最後的分號,然後再試一次。我不確定$字段是如何在此之後定義的。 – jh1711
即使在循環完成後,顯然$ key和$ field仍然保留。忽略我評論的第二句話。 Kamran的答案解釋了半問題。 – jh1711
如果你不打算使用'$ key',不要在foreach循環中聲明它。你的正則表達式模式可以/應該是'/ desc \ d + _(name | text) – mickmackusa