array_combine (): оба параметра должны иметь равное количество элементов, даже если оба массива имеют одинаковую длину - PullRequest
0 голосов
/ 16 июня 2020
function csvToArray($filename = '', $delimiter = ',')
{
    if (!file_exists($filename) || !is_readable($filename))
        return false;

    $header = null;
    $data = array();
    if (($handle = fopen($filename, 'r')) !== false)
    {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== false)
        {
            $filtered_row = array();
            foreach ($row as $field) {
               $field = utf8_encode($field); 
               $field = str_replace('', '', $field);
               array_push($filtered_row, $field);
            }
            if (!$header)
                $header = $filtered_row;

            else{
                  print_r($header);
                  print_r($filtered_row); 
                  echo count($header);
                  echo count($filtered_row);
               // exit;
                $data[] = array_combine($header, $filtered_row);
                print_r($data); exit;
            }
        }
        fclose($handle);
    }
    return $data;
}

Приведенные выше print_r и echo генерируют следующий вывод:

Array
(
    [0] => care_of
    [1] => customer_mobile
    [2] => customer_alt_mobile
    [3] => customer_name
    [4] => customer_district
    [5] => customer_upazila
    [6] => customer_address
    [7] => product_weight_kg
    [8] => delivery_time
    [9] => cash_collection
)
Array
(
    [0] => Moshiur Rahman
    [1] => 1673050495
    [2] => 1620010950
    [3] => Abdus Sattar Bhuiyan
    [4] => dhaka
    [5] => Rampura
    [6] => 3rd floor, House:118/D, Road:05
    [7] => 0.5
    [8] => 1,2
    [9] => 300
)
1010Array
(
    [0] => Array
        (
            [care_of] => Moshiur Rahman
            [customer_mobile] => 1673050495
            [customer_alt_mobile] => 1620010950
            [customer_name] => Abdus Sattar Bhuiyan
            [customer_district] => dhaka
            [customer_upazila] => Rampura
            [customer_address] => 3rd floor, House:118/D, Road:05
            [product_weight_kg] => 0.5
            [delivery_time] => 1,2
            [cash_collection] => 300
        )

)

Все идеально. но когда я удаляю exit и print_r, echo, я получаю следующую ошибку: array_combine(): оба параметра должны иметь равное количество элементов

Странно !. Кажется, я делаю что-то вроде глупости, но через пару часов не могу понять. есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...