Только 1-я буква отображается, когда php эхо внутреннего массива - PullRequest
0 голосов
/ 07 апреля 2020

Код, который я использую .. (благодаря помощи, которую я получил отсюда для меня, чтобы получить это как новичок!)

function readCSV($csvFile)
    {
        $line_of_text = [];
        $file_handle = fopen($csvFile, 'r');
        //skip csv headers and blank lines
        fgetcsv($file_handle);
        fgetcsv($file_handle);
        fgetcsv($file_handle);  
        while (!feof($file_handle)) {
            $tmp = fgetcsv($file_handle, 1024);

            if (isset($line_of_text[$tmp[0]])) {
                foreach ($tmp as $k => $v) {

                    if (array_key_exists($k, $line_of_text[$tmp[0]])) {
                        if (!is_array($line_of_text[$tmp[0]][$k])) {
                            $kVal = $line_of_text[$tmp[0]][$k];

                            $line_of_text[$tmp[0]][$k] = [];
                            $line_of_text[$tmp[0]][$k][] = $kVal;
                        }

                        $line_of_text[$tmp[0]][$k][] = $v;
                        $line_of_text[$tmp[0]][$k] = array_unique($line_of_text[$tmp[0]][$k]);
                        $line_of_text[$tmp[0]][$k] = array_filter($line_of_text[$tmp[0]][$k]);

                        if (count($line_of_text[$tmp[0]][$k]) == 1) {
                            $line_of_text[$tmp[0]][$k] = array_values($line_of_text[$tmp[0]][$k]);
                            $line_of_text[$tmp[0]][$k] = $line_of_text[$tmp[0]][$k][0];
                        }

                        if (empty($line_of_text[$tmp[0]][$k])) {
                            $line_of_text[$tmp[0]][$k] = null;
                        }

                    } else {
                        $line_of_text[$tmp[0]][$k] = null;
                    }
                }
                $line_of_text[$tmp[0]][0] = $tmp[0];

            } else {
                $line_of_text[$tmp[0]] = $tmp;
            }

        }

        fclose($file_handle);
        return array_filter(array_values($line_of_text));
    }

    // Set path to CSV file
    $csvFile = 'tmp_csv_store/my.csv';
    $csv = readCSV($csvFile);

//$csv is your array
foreach($csv as $key => $value){
 if(!array_key_exists(@$value[0],$arr)){
  $arr[@$value[0]] = [];
  }
  $arr[@$value[0]] = array_merge($arr[@$value[0]],$value);  
}
foreach($arr as $order)
{
    echo "Order number: " . $order["0"];
echo "<br>";
    foreach($order["21"] as $item)
    {
        echo "Item Name: " . $item["0"];
        echo "<br>";
    }
    echo "<br>";
}

Результат, который я получаю, таков. .

Order number: 110393
Item Name: D
Item Name: D

Order number: 110390
Item Name: D
Item Name: D
Item Name: D

Когда я ожидал ..

Order number: 110393
Item Name: Desc1
Item Name: Desc2

Order number: 110390
Item Name: Desc2
Item Name: Desc4
Item Name: Desc10

Я перечитал несколько вопросов "только получение 1-й буквы", попытался добавить "", чтобы [0] стало [" 0 "] а что не получилось? Я не могу понять, что я делаю неправильно.

РЕДАКТИРОВАТЬ: Также только что заметил для элементов, где есть только 1 (поэтому нет подмассива, когда только 1), он не отображается вообще, как я могу справиться с этим?

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