Tömbös kérdés...
Sziasztok!
Adott két tömb. Az egyik tömb a passwd fáljból a felhasználók neveit tartalmazza, a másik tömb is szintén felhasználóneveket, melyek között vannak olyanok, amik megtalálhatóak az első tömbben. Én egy olyan tömböt szeretnék, amely azokat a neveket tartalmazza, amely az egyik tömbben megtalálható, de a másikban nem. Ha jól emlékszem ezt halamozok különbségének nevezzük.
Egy példával is élek:
Egyik tömb: proba, szabi, ssh, root
Másik tömb: proba, ssh
Eredemény tömb: szabi, root
Szóval így kéne működnie...
A próbálkozásom:
<?php
$passwd = file("/etc/passwd");
foreach ($passwd as $ertek) {
$tomb[] = substr($ertek, 0, strpos($ertek, ":"));
}
$adatbazis = file("tomb.txt");
$eredmeny = array_diff($adatbazis,$tomb);
foreach ($eredmeny as $ertek) {
echo $ertek . "<br>";
}
?>
Erre visszaadja a teljes $adatbazis tömböt, és nem a különbséget...
■ Adott két tömb. Az egyik tömb a passwd fáljból a felhasználók neveit tartalmazza, a másik tömb is szintén felhasználóneveket, melyek között vannak olyanok, amik megtalálhatóak az első tömbben. Én egy olyan tömböt szeretnék, amely azokat a neveket tartalmazza, amely az egyik tömbben megtalálható, de a másikban nem. Ha jól emlékszem ezt halamozok különbségének nevezzük.
Egy példával is élek:
Egyik tömb: proba, szabi, ssh, root
Másik tömb: proba, ssh
Eredemény tömb: szabi, root
Szóval így kéne működnie...
A próbálkozásom:
<?php
$passwd = file("/etc/passwd");
foreach ($passwd as $ertek) {
$tomb[] = substr($ertek, 0, strpos($ertek, ":"));
}
$adatbazis = file("tomb.txt");
$eredmeny = array_diff($adatbazis,$tomb);
foreach ($eredmeny as $ertek) {
echo $ertek . "<br>";
}
?>
Erre visszaadja a teljes $adatbazis tömböt, és nem a különbséget...
newline
VBala megoldása célhoz
Köszönöm szépen a segítséget mindenkinek!
Egyszerű megoldás
Mivel a php nem kezeli halmazokat, ezért talán az a legegyszerűbb, valahogy így jársz el:
unset($ujtomb)
foreach ($tomb1 as $kulcs => $ertek) {
$ujtomb[$ertek]=$ertek
}
foreach ($tomb2 as $kulcs => $ertek) {
$ujtomb[$ertek]=$ertek
}
sort ($ujtomb)
Röviden, hogy ez hogy működik: Mindkét tömbön végigrohansz és az összes értéket átgányolod az uj tömbbe az értéknek megfelelő tömbindexel, így semmi gond ha az érték kétszer szerepel, mivel ugyanazt az értéket fogja felülírni. Majd a végén ha akarod rendezed a tömböt.
Szerintem ez a legegyszerűbb megoldás az említett problémára, ha tudtok jobbat engem is érdekel... :)
Üdv, Halee
Jah csak az elejét olvastam
De attólmég működik...
Elvileg jó
--
slink
http://20y.hu/
Köszönöm a
Direkt olyan értékekkel dolgozom, melyek mindkét tömbben megtalálhatóak. Az operandusokat felcserélve sem működik, mindig a teljes első operandus tömböt adja vissza.
De most megpróbálom a válaszaitok alapján, hátha...