Код, который я использую .. (благодаря помощи, которую я получил отсюда для меня, чтобы получить это как новичок!)
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), он не отображается вообще, как я могу справиться с этим?