Здравствуйте, все, что мне нужно немного помочь с проблемой массива.
У меня есть плоский массив, созданный из текста PDF, массив данных продукта, смешанный с другим текстом страницы, кажется, что шаблон
ОписаниеCodePrice
затем X количество продуктов с
- Descripton
- ID продукта
- Цена
данные также не совпадают, некоторые продукты имеют более 3 строк
продукт будет
- Описание: сковорода высокого / низкого уровня Hemsworth 400 (ч) х 375 (ш) х438 (d) мм
- Идентификатор процесса: INST02009
- Цена: £ 176,00
Я использовал это для аналогичного проекта, но он не совсем работает
$transactions = array();
foreach ($array as $row) {
if ($row['0'] === "DescriptionCodePrice") {
$transactions[] = array();
}
$transactions[count($transactions) - 1][0] = $row;
}
Я пытаюсь извлечь все данные о продукте в аккуратный массив, например так:
Array
(
[products] => Array
(
[0] => Array
(
[description] =>
[id] =>
[price] =>
)
[1] => Array
(
[description] =>
[id] =>
[price] =>
)
[2] => Array
(
[description] =>
[id] =>
[price] =>
)
)
)
это мои данные
Array
(
[0] => 8 SANITARYWARE | HEMSWORTH CLOSE COUPLEDPrices include VAT
[1] => DescriptionCodePrice
[2] => Hemsworth Close Coupled Pan
[3] => 421(h) x 373(w) x 673(d) mm INST02007
[4] => £206.00
[5] => Hemsworth Close Coupled
[6] => Cistern 481(w) mm INST02001
[7] => £170.00
[8] => Hemsworth Basin 605mm
[9] => Two Taphole INST02003
[10] => £172.00
[11] => Hemsworth Pedestal INST02008£84.00
[12] => Hemsworth Soft Close Bar
[13] => Hinge Seat - Solid Natural Oak INST02011
[14] => £147.00
[15] => Total £779.00
[16] => Hemsworth Close Coupled WC Suite
[17] => Description CodePrice
[18] => Hemsworth Close Coupled Pan
[19] => 421(h) x 373(w) x 673(d) mm INST02007
[20] => £206.00
[21] => Hemsworth Close Coupled
[22] => Cistern 481(w) mm INST02001
[23] => £170.00
[24] => Hemsworth Soft Close Bar
[25] => Hinge Seat - Solid Natural Oak INST02011
[26] => £147.00
[27] => Hemsworth Soft Close Bar
[28] => Hinge Seat - White INST02012
[29] => £132.00
[30] => Hemsworth
[31] => Hemsworth Basin 605mm
[32] => Description CodePrice
[33] => Hemsworth Basin 605mm
[34] => Two Taphole INST02003
[35] => £172.00
[36] => Hemsworth Basin 605mm
[37] => One Taphole INST02010
[38] => £172.00
[39] => Hemsworth Cloakroom Basin
[40] => 500 x 305mm Two Taphole INST02013
[41] => £144.00
[42] => Hemsworth Pedestal (Fits
[43] => 605mm and 500mm basin) INST02008
[44] => £84.00
[45] => £256. 00
[46] => Hemsworth Basin
[47] => 605mm Two Taphole
[48] => & Pedestal
[49] => (Taps not included)
[50] => £523. 00
[51] => Hemsworth Close Coupled WC with Oak Seat
[52] => Hemsworth Suite with Close
[53] => Coupled Cistern WC & Basin
)
Код моей текущей страницы
<code>require_once("vendor/autoload.php");
// Parse pdf file and build necessary objects.
$parser = new \Smalot\PdfParser\Parser();
$pdf = $parser->parseFile('Instinct-Autumn-Bathroom-Catalogue-2018-
pages/page-9.pdf');
// Retrieve all pages from the pdf file.
$pages = $pdf->getPages();
// Loop over each page to extract text.
foreach ($pages as $page) {
$array = explode("\n", $page->getText());
echo "<pre>";
print_r($array);
echo "
"; echo '
';} // Разбить массив на транзакции $ Transactions = array (); foreach ($ array as $ row) {if ($row ['0'] === "DescriptionCodePrice") {$ Transactions [] = array ();} $ Transactions [количество ($ транзакций) - 1] [0] = $ row;}