ugrás a tartalomhoz

PHP tömbből részkeresés

simisoma · 2015. Aug. 2. (V), 00.21
Sziasztok,

hogyan tudnék az alábbiakképpen keresni egy tömbben:

$tomb[Cikkszam] = 123456789;

Úgy szeretnék keresni a tömbbe, hogy ha a '23456' - ot írom be akkor is találja meg.

Ha,

in_array($tomb[Cikkszam],'23456')

-val keresek rá nem találja meg.

Hogyan lehet részletre is keresni egy adott tömb értékében?

Köszi!
 
1

Adatbázis?

T.G · 2015. Aug. 2. (V), 08.25
A teljes feladatot nem ismerve, de az indexnév alapján azért arra gondolhat az ember, hogy ezeket az adatokat adatbázisból szeded, akkor elve ott kell ezt megszűrni:
SELECT * FROM termekek WHERE cikkszam LIKE '%23456%';
Ellenben, ha valóban PHP tömbökben akarsz ilyet csinálni, akkor végig kell menned a tömbön és egyesével kell vizsgálnod az értékeket, pl. strpos -zal.
2

csv

simisoma · 2015. Aug. 2. (V), 09.15
Nem adatbázisból úgy csinálnám, de ugyanaz a funkció tömben való keresésnél kellene, mert egy CSV fájl-t töltök be tömbbe és abba kell keressek részszavakat.
3

strpos

T.G · 2015. Aug. 2. (V), 10.24
4

Tömb

simisoma · 2015. Aug. 2. (V), 21.31
De ez string-ben keres és nem tömbben nem?

is_array - -hoz hasonló működésű nincsen esetleg ammi szövegrészre keres a tömbben?
6

Ha külön függvény kell, akkor

inf · 2015. Aug. 2. (V), 23.19
Ha külön függvény kell, akkor van az array_filter, vagy ilyesmik, de a legegyszerűbb, ha ciklussal bejárod, aztán megkeresed amit kell. Ha nagy fájlból olvasol ki és a sor vége egy rekord vége is (nem tudom hogy van csv-nél), akkor memória szempontjából jobb, ha a fájl sorain lépkedsz, és nem töltöd be egyszerre az egészet. Egy másik lehetőség, ha felnyomod a csv tartalmát adatbázisba, és utána adatbázissal kerestetsz. Nyilván csak te tudod, hogy melyik a legjobb neked.
5

Ilyesmit keresel? Bár lehet

Eldahar · 2015. Aug. 2. (V), 22.01
Ilyesmit keresel? Bár lehet ez ágyúval verébre :)

$data = [
    123     => 123456789,
    167     => 456789,
    264     => 123456,
    42      => 23456,
    128     => 1236789,
];

$search = 23456;

$filteredData = new RegexIterator(
    new ArrayIterator($data),
    "/^.*".$search.".*$/",
    RegexIterator::ALL_MATCHES
);

if(count(iterator_to_array($filteredData)) > 0) {
    printf("Találtam!\n");
} else {
    printf("Nem találtam!\n");
}