2016-03-30 3 views
-4

У меня есть 2 файла, напримервзрываются а: Ь к: C PHP

file1.txt и file2.txt

file1.txt содержит, например, следующего содержания:

a:b 
markus:lanz 
peter:heinrichs 
lach:schnell 

и file2.txt содержит, например, следующее содержимое (2-й взрыв файла1.txt)

b:c 
lanz:hallo 
heinrichs:gruss 
schnell:langsam 

, поэтому я хочу, чтобы иметь следующий вывод в PHP:

a:c 
markus:hallo 
peter:gruss 
lach:langsam 

, как это возможно?

сначала взорвать первый, а затем искать или как?

благодаря

мой текущий код ниже:

<?php 
$file1 = 'a:b 
markus:lanz 
peter:heinrichs 
lach:schnell'; 

$file2 = ' 
lanz:hallo 
heinrichs:gruss 
b:c 
test:notest 
schnell:langsam'; 




    $array = explode(":", $file1); 

    for($i=0; $i < count($array); $i++) { 


    $array = explode(":", $file1); 

$pattan = $array[$i]; 
    $pattern = '=\n'. $pattan .':(.*)\n=sUm'; 
    $result = preg_match($pattern, $file2, $subpattern); 

echo "<br>"; 
    echo $array[$i]; 
    $first = $array[$i]; 
    echo "<br>"; 
    } 



    $pattern = '=\n'. $first .':(.*)\n=sUm'; 
    $result = preg_match($pattern, $file2, $subpattern); 
var_dump($subpattern); 

?> 

, что я делаю не так?

+0

вы, кажется, соответствующие положения, им не уверены в том, что точка поиска является –

+1

Если данные считываются из реальных файлов, тогда вы должны сначала использовать 'файл', чтобы получить массивы, содержащие одиночные строки. Затем проведите через них и взорвите их в двоеточие. – CBroe

+0

хотите, чтобы, например, a: b переходит к: c не важно, как порядок – yarak32

ответ

0

Что вы думаете об этом:

$file1="a:b 
markus:lanz 
peter:heinrichs 
lach:schnell"; 

$file2="b:c 
lanz:hallo 
heinrichs:gruss 
schnell:langsam"; 

$a1 = explode("\n",$file1); 
$a2 = explode("\n",$file2); 

if(count($a1) != count($a2)) die("files don't match!"); 

$final=array(); 
foreach($a1 as $k=>$line){ 
    $l1 = explode(":",$line); 
    $l2 = explode(":",$a2[$k]); 
    $final[]=$l1[0].':'.$l2[1]; 
} 
print_r($final); 
0

Я хотел бы использовать следующий подход:

// load your two files into arrays using file() and explode each line on ':' 
foreach ([1,2] as $n) { 
    $files[$n] = array_map(function($x){ return explode(':', trim($x));}, file("file$n.txt")); 
} 

// with file1, fill the output array with 'a' values using 'b' as the key to output 
foreach ($files[1] as $ab) { 
    $output[$ab[1]]['a'] = $ab[0]; 
} 

// with file2, fill the output array with 'c' values, also using 'b' as the key 
foreach ($files[2] as $bc) { 
    $output[$bc[0]]['c'] = $bc[1]; 
} 

// remove any elements that do not have count 2 (i.e. both a and c values) 
$output = array_filter($output, function ($x) { return count($x) == 2; });