Tömbök összefésülése

Adott két tömb egy PHP fájlban, azonos felépítéssel.
Azt szeretném megoldani, hogy ezek a tömbök ne összfűzve legyenek, azaz egyik vége után a teljes másik, hanem soronként összefésülve és egy tömben eltárolva. Az array_merge() függvénnyel próbáltam, de az az előbbi nem kívánt módon működött. Egész pontosan a mergeLineFiles() -hez hasonló kimenetüt keresnék, csak tömbökre használható függvény formájában.
Ilyen kimenttel, csak tömbökre:

array (
0 => 'line_1 from file1',
1 => 'line_1 from file2',
2 => 'line_1 from file3',
3 => 'line_2 from file1',
4 => 'line_2 from file2',
5 => 'line_2 from file3',
6 => 'line_3 from file1',
7 => 'line_3 from file2',
8 => 'line_3 from file3',
);

Hozzászólások

for i++ amig nincsvége {
push ujtomb tomb1[i]
push ujtomb tomb2[i]
push ujtomb tomb3[i]
}

nyilván még tomb1-3 végére figyelünk meg ilyesmi, meg el lehet generalizálni, hogy hány tömböt eszik, de azért nem tűnik egy hűde bonyi feladatnak...

Vagy még gyorsabb az, ha nem másol, hanem egy függvény első két paraméterében a tömböket, a harmadik paraméterben az indexet adja meg, a függvény pedig az index párosságának megfelelően az a1[int(i/2)] vagy a2[int(i/2)] elemet adja vissza.
... mármint addig gyorsabb, amíg nem kell mindent visszaolvasni.

Mielőtt ezt leírtad, elővettél egy darab papírt, amelyen 2 db kételemű tömbbel lefuttattad a fenti algoritmust?

(Bizisten nem buzerálni akarlak, amikor azt írom, hogy szűk egy hét tapasztalata az, hogy jól fel kell kötnie az idegrendszerét annak, aki neked segíteni akar.)

szerk: ez se jó... Végül is azt szeretnéd, ha felváltva venne egy-egy elemet mindkettő (a példában három) input-tömbből?

Ha jól értem, az azonos kulcsú értékekből(??? vagy azonos értékekből, mert hagyományos tömb?) csak egy példányt akar megtartani. Már feltéve, hogy jól értelmezem és asszociatív tömbjei vannak, ahol a tömbelemeknek bármilyen kulcsa lehet.
De elképzelhető, hogy félreértem.

A tömbjeidnek mik az indexei? Számok, rendesen nullától, vagy esetleg asszociatív tömbök?
Vagy esetleg az array_combine-nal elérheted, hogy az indexek az egyik tömbből, az értékek meg a másik tömbből származnak, ez is félig-meddig felváltva lesz - persze ha az indexként használt tömbben vannak egyforma elemek, akkor nem fog működni.

Ja, nem, azt amit te írtál, azt értem, csak erősen meglepődtem, hogy phpben az array az tulajdonképpen egy asszociatív tömb (csak van neki shortcutja arra, hogy a kulcsok i++ legyenek), nem csak egy sima mezei lista.

Aztán jött a dejavu, hogy erre egyszer már rácsodálkoztam :)

valami ilyesmi (kicsit dedosan, hogy szemleletes legyen):


$ cat index.php 
<?php
$a = $b = range(1, 5);
$c = [];
$a = array_map(function($egy) { return 'elso_' . $egy;}, $a);
$b = array_map(function($egy) { return 'mdik_' . $egy;}, $b);
for ($i = 0; $i<=max(array(count($a), count($b))); $i++) {
	if (!empty($a[$i])) { 
		$c[] = $a[$i];
	}
	if (!empty($b[$i])) {
		$c[] = $b[$i];
	}
}
print_r($c);

eredmenye:


$ php index.php 
Array
(
    [0] => elso_1
    [1] => mdik_1
    [2] => elso_2
    [3] => mdik_2
    [4] => elso_3
    [5] => mdik_3
    [6] => elso_4
    [7] => mdik_4
    [8] => elso_5
    [9] => mdik_5
)

t