【问题标题】:Laravel Exception: Both parameters should have an equal number of elementsLaravel 异常:两个参数应该有相同数量的元素
【发布时间】:2019-10-23 18:06:07
【问题描述】:

我是 laravel 的新手,我正在制作一个需要将 .CSV 数据导入数据库的应用程序,数据已成功导入,但是我遇到了这个问题:

ErrorException array_combine(): Both parameters should have an equal number of elements

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Accounts;
class AccountController extends Controller
{
    public function show(){
        return view ('upload');
    }
    public function store(Request $request){


        $file = $request->file('upload-file');
        $csvData = file_get_contents($file);

        $rows = array_map("str_getcsv", explode("\n", $csvData));
    // dd($rows);
        $header = array_shift($rows);
//    dd($header);
        foreach ($rows as $row) {

            $row = array_combine($header, $row);
            if (count($header) != count($row)) {
                continue;
              }
            set_time_limit(0);
            Accounts::create([
                'AccountClass' => $row['Classe'],
                'AccountNumber' => $row['Compte'],
                'AccountDesc' => $row['Desc'],
                'active' => 1,
            ]);
        }

        return view ('home');

    }

}

你能指出我正确的方向吗提前谢谢你

【问题讨论】:

标签: php laravel


【解决方案1】:

当您尝试合并两个长度不等的数组时会出现此错误。

$arr1 = ["a", "s", "d"];
$arr2 = [1, 2, 3];

if(count($arr1) == count($arr2)){
    $result = array_combine($arr1, $arr2);
} else{
    echo "Error array combine";
}

【讨论】:

  • 我有第一个数组 0 => "1" 1 => "1" 2 => "COMPTES DE FINANCEMENT PERMANENT" 和第二个数组数组:3 [▼ 0 => "Classe" 1 => "Compte" 2 => "Desc" ] ;我猜它们是相等的
  • @anabel 问题是您有重复的键值,array_combine() 尝试将第一个数组中的值作为键,并将第二个数组中的值作为新数组的值,即尝试这样做 1 => "Classe" 1 => "Compte" "COMPTES DE FINANCEMENT PERMANENT" => "Desc" 这里的问题是你有重复的键(1 是重复的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多