You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP将Excel转为数组时嵌套层级过多,如何转为一维数组?

解决方案:将单列Excel数据转为PHP一维数组

当然可以实现!针对你说的Excel仅含一列多行数据的场景,我们可以通过两种方式调整代码,直接得到你想要的一维数组['0894090592', '0894040404']。

方法一:遍历单元格直接提取值(更灵活)

这种方式能精准控制每一行的读取,还能轻松处理表头跳过、空行过滤等自定义需求:

function excel_to_array($excel_file) {
    $filename = dirname(dirname(__FILE__)) .'/admin/user_files/' . $excel_file['name'];
    $type = PHPExcel_IOFactory::identify($filename);
    $objReader = PHPExcel_IOFactory::createReader($type);
    $objPHPExcel = $objReader->load($filename);
    
    $result = [];
    // 遍历所有工作表(你的场景只有一个,也可以直接取第一个工作表)
    foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
        // 遍历工作表的每一行
        foreach ($worksheet->getRowIterator() as $row) {
            $cellIterator = $row->getCellIterator();
            $cellIterator->setIterateOnlyExistingCells(false); // 确保读取空单元格(如果需要)
            foreach ($cellIterator as $cell) {
                // 提取当前单元格的值并加入结果数组
                $result[] = $cell->getValue();
                break; // 因为只有一列,取第一个单元格就停止当前行的遍历
            }
        }
    }
    
    // 如果Excel有表头,需要跳过第一行的话,取消下面这行注释
    // array_shift($result);
    
    var_dump($result);
    return $result;
}

方法二:扁平化原代码的嵌套数组(更简洁)

如果你想保留原代码的toArray()逻辑,只需要在最后对嵌套数组做扁平化处理即可:

function excel_to_array($excel_file) {
    $filename = dirname(dirname(__FILE__)) .'/admin/user_files/' . $excel_file['name'];
    $type = PHPExcel_IOFactory::identify($filename);
    $objReader = PHPExcel_IOFactory::createReader($type);
    $objPHPExcel = $objReader->load($filename);
    
    $worksheets = [];
    foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
        $worksheets[] = $worksheet->toArray();
    }
    
    // 扁平化数组:合并工作表数据(仅一个工作表时等价于取$worksheets[0]),再提取每一行的第一个元素
    $flatArray = array_column(array_merge(...$worksheets), 0);
    
    // 若有表头,同样可以用array_shift($flatArray)移除
    var_dump($flatArray);
    return $flatArray;
}

补充说明

  • 两种方法都能得到你需要的一维数组:方法一更适合需要自定义处理(比如跳过空行、格式化单元格值)的场景;方法二更简洁,适合简单的单列数据读取。
  • 如果你的Excel存在表头行,记得取消代码中注释的array_shift语句来移除表头元素。

内容的提问来源于stack exchange,提问作者MorganFreeFarm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:14:10