我想使用laravel获取excel中行的值,但它不断重复

问题描述 投票:0回答:1

我在 Laravel 应用程序上导入了 Excel,并提取了我想要循环遍历行并获取值的数据。我正在获取值,但它不断重复

public function bulkTransfer(Request $request)
{
    Log::info("########## Validating File #########");

    $request->validate([
        "file" => 'required|file|mimes:csv,xlsx'
    ],[
        "fileName.mimes" => "File should be a csv or excel file"
    ]);
    Log::info("########## File Validated #########");

    if($request->has("file")){
        $allAccounts = Excel::toArray(new \stdClass(), $request->file("file"));
        foreach ($allAccounts as $accounts){
            foreach ($accounts as $account){
              for ($i=0; $i<=count($account); $i++){
                  echo '<p>'.  $account[1] . " " . $account[2] . " " . $account[3] . "</p>";
              }
            }

        }
    }
}

这是我从excel文件中获取的数据数组

array:1 [ // app/Http/Controllers/TransferController.php:33
  0 => array:4 [
    0 => array:4 [
      0 => "Account Name"
      1 => "Account Number"
      2 => "Bank Code"
      3 => "Amount"
    ]
    1 => array:4 [
      0 => "Okafor John"
      1 => 98393
      2 => 988
      3 => 3000
    ]
    2 => array:4 [
      0 => "Joy Ema"
      1 => 87383
      2 => 8378
      3 => 2000
    ]
    3 => array:4 [
      0 => "Ike Sam"
      1 => 89382
      2 => 888
      3 => 1500
    ]
  ]
]

当我运行代码时,这是我得到的输出

账号 银行代码 金额

账号 银行代码 金额

账号 银行代码 金额

账号 银行代码 金额

账号 银行代码 金额

98393 988 3000

98393 988 3000

98393 988 3000

98393 988 3000

98393 988 3000

87383 8378 2000

87383 8378 2000

87383 8378 2000

87383 8378 2000

87383 8378 2000

89382 888 1500

89382 888 1500

89382 888 1500

89382 888 1500

89382 888 1500

excel laravel for-loop foreach
1个回答
0
投票

您可以这样显示项目:

      if ($request->has("file")) {
        $allAccounts = Excel::toArray(new \stdClass(), $request->file("file"));
        foreach ($allAccounts as $accounts) {
            foreach ($accounts as $account) {

                //your code : 
                echo '<p>' . $account[1] . " " . $account[2] . " " . $account[3] . "</p>";

                // better way
                echo sprintf('<p> %s %s %s %s </p>', $account[0], $account[1], $account[2], $account[3]);

                // php 8.2
                echo sprintf('<p> %s %s %s %s </p>', ...$account);
            }

        }
    }

检查此代码

© www.soinside.com 2019 - 2024. All rights reserved.