为什么foreach只在数组中创建一个值?

时间:2017-07-29 22:06:24

标签: php mysql foreach module prestashop

我为PrestaShop 1.6创建了一个模块。我无法在表中获取此模块创建的列。我不知道可能出错了什么。 '$ fields'只占用最后一列。 '$ result'没问题。好像PHP没有创建索引。

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', )

1 个答案:

答案 0 :(得分:3)

你正在使用;在foreach循环结束时,循环体最终在第一个;所以请删除它。 对于foreach,代码应该是这样的

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

Demo