Pereiti prie turinio

[PHP] dvieju masyvu sulyginimas


Rekomenduojami pranešimai

Yra stringo eilutes column row principu, pirma eilute visada prasideda H raide (column) ir po jos eina sekanti eilute D (kaip row). Column eilute visada buna tik viena, o row gali buti neriboto kiekio, kaip galeciau abu masyvus sudeti kad vertikaliai atitiktu column row reiksmes? Gal kazkas labiau patyres galetu padeti?

$str = "H\tID\tName\n" .
	"D\t2047\tTest\n" .
	"H\tProduct\tPrice\n" .
	"D\t2222\t370\n" .
	"D\t3333\t14\n" .
	"D\t4444\t76\n";
	
$data = explode("\n", $str);

foreach ($data as $line)
{
	if (@$line[0] == "H")
	{
		$cols = explode("\t", $line);
	}
	if (@$line[0] == "D")
	{
		$rows = explode("\t", $line);
	}
}

print_r($cols);
print_r($rows);

Noriu kad gautusi taip:
+-----------+------------------------+
|  H        |  D                     |
+-----------+------------------------+
|  ID       |  2047                  |
+-----------+------------------------+
|  Name     |  Test                  |
+-----------+------------------------+
|  H        |  D    D    D            |
+-----------+------------------------+
|  Product  |  2222    3333    4444     |
+-----------+------------------------+
|  Price    |  370    14    376          |
+-----------+------------------------+

Arba finale tiesiog tokio masyvo:
Array
(
    [0] => H    D
    [1] => ID    2047
    [2] => Name    Test
    [3] => H    D    D    D
    [4] => Product    2222    3333    4444
    [5] => Price    370    14    76
)

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose
<?php
$str = "H\tID\tName\n" .
	"D\t2047\tTest\n" .
	"H\tProduct\tPrice\n" .
	"D\t2222\t370\n" .
	"D\t3333\t14\n" .
	"D\t4444\t76\n";

$data = explode("\n", $str);
$cols = Array();
$next = -1;
foreach ($data as $line)
{
	$split = explode("\t",$line);
	if ($split[0] == "H")
	{
		unset($split[0]);
		$cols[]['header'] = $split;
		$next++;
		continue;
	}
	if ($split[0] == "D")
	{
		unset($split[0]);
		$cols[$next]['data'][] = $split;
	}
}

print_r($cols);
?>

Rezultatas:
 

Array
(
    [0] => Array
        (
            [header] => Array
                (
                    [1] => ID
                    [2] => Name
                )

            [data] => Array
                (
                    [0] => Array
                        (
                            [1] => 2047
                            [2] => Test
                        )

                )

        )

    [1] => Array
        (
            [header] => Array
                (
                    [1] => Product
                    [2] => Price
                )

            [data] => Array
                (
                    [0] => Array
                        (
                            [1] => 2222
                            [2] => 370
                        )

                    [1] => Array
                        (
                            [1] => 3333
                            [2] => 14
                        )

                    [2] => Array
                        (
                            [1] => 4444
                            [2] => 76
                        )

                )

        )

)

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...