Проблема: я хочу оставить присоединение file0.csv с file1.csv.
Код: Выделить всё
+-----------------+-------------+--------------+
| Manufacturer ID | image | description |
+-----------------+-------------+--------------+
| SKU231 | image1.jpg | A box. |
| SKUAG1 | image22.jpg | Another box. |
| SKU21D | image7a.png | A third box. |
+-----------------+-------------+--------------+
< /code>
file1.csv:
+--------+--------+--------+-------+-------+
| mpn | length | height | width | title |
+--------+--------+--------+-------+-------+
| SKU231 | 22 | 14 | 10 | Box 1 |
| SKUAG1 | 12 | 6 | 6 | Box 2 |
| SKU21D | 5 | 8 | 5 | Box 3 |
+--------+--------+--------+-------+-------+
< /code>
желаемый результат (file2.csv): < /p>
+-----------------+-------------+--------------+--------+--------+--------+-------+-------+
| Manufacturer ID | image | description | mpn | length | height | width | title |
+-----------------+-------------+--------------+--------+--------+--------+-------+-------+
| SKU231 | image1.jpg | A box. | SKU231 | 22 | 14 | 10 | Box 1 |
| SKUAG1 | image22.jpg | Another box. | SKUAG1 | 12 | 6 | 6 | Box 2 |
| SKU21D | image7a.png | A third box. | SKU21D | 5 | 8 | 5 | Box 3 |
+-----------------+-------------+--------------+--------+--------+--------+-------+-------+
Код: Выделить всё
function my_csv_join(array $csv_input_file_array, $csv_output_file, $html_preview, $left_join_on, $right_join_on = NULL) {
if (count($csv_input_file_array) > 2) {
echo 'This function probably only works for 2 csv files being joined at a time. Reapply iteratively if needed. Exiting now.';
exit;
} else {
for ($x = 0; $x $v) {
$final[$k] = $v; //basically keeping everything; $left just becomes $final
foreach ($right AS $kk => $vv) {
if ($v[$left_join_on] == $vv[$right_join_on]) {
foreach ($vv AS $key => $val)
$final[$k][$key] = $val;
} else {
foreach ($vv AS $key => $val)
$final[$k][$key] = NULL;
}
}
}
if ($html_preview == 'y') {
echo '
';
var_dump($final);
echo '';
}
// REINSTATE HEADERS
// var_dump($final[0]);
$indented_header = array(
0 => array_keys($final[0])
);
$re_headered_array = array_merge($indented_header, $final);
// write array to csv file
$file2 = fopen($csv_output_file, "w");
foreach ($re_headered_array as $line) {
fputcsv($file2, $line);
}
fclose($file2);
}
}
Код: Выделить всё
my_csv_join(array('C:\xampp\htdocs\kalugi\file0.csv','C:\xampp\htdocs\kalugi\file1.csv'), 'C:\xampp\htdocs\kalugi\file2.csv','y','Manufacturer ID','mpn');
Код: Выделить всё
var_dumparray(3) {
[0]=>
array(8) {
["Manufacturer ID"]=>
string(6) "SKU231"
["image"]=>
string(10) "image1.jpg"
["description"]=>
string(6) "A box."
["mpn"]=>
NULL
["length"]=>
NULL
["height"]=>
NULL
["width"]=>
NULL
["title"]=>
NULL
}
[1]=>
array(8) {
["Manufacturer ID"]=>
string(6) "SKUAG1"
["image"]=>
string(11) "image22.jpg"
["description"]=>
string(12) "Another box."
["mpn"]=>
NULL
["length"]=>
NULL
["height"]=>
NULL
["width"]=>
NULL
["title"]=>
NULL
}
[2]=>
array(8) {
["Manufacturer ID"]=>
string(6) "SKU21D"
["image"]=>
string(11) "image7a.png"
["description"]=>
string(12) "A third box."
["mpn"]=>
string(6) "SKU21D"
["length"]=>
string(1) "5"
["height"]=>
string(1) "8"
["width"]=>
string(1) "5"
["title"]=>
string(5) "Box 3"
}
}
< /code>
Результат, который записан в $ file2 (file2.csv): < /p>
+-----------------+-------------+--------------+--------+--------+--------+-------+-------+
| Идентификатор производителя | изображение | Описание | mpn | Длина | высота | ширина | Название |
+-----------------+-------------+--------------+--------+--------+--------+-------+-------+
| Sku231 | Image1.jpg | Коробка. | | | | | |
| Skuag1 | Image22.jpg | Другая коробка. | | | | | |
| Sku21d | Image7a.png | Третья коробка. | Sku21d | 5 | 8 | 5 | Вставка 3 |
+-----------------+-------------+--------------+--------+--------+--------+-------+-------+
< /pre>
Почему 2 из строк не соединены, несмотря на файл.>
Подробнее здесь: https://stackoverflow.com/questions/599 ... -csv-files
Мобильная версия