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:
  1. 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 :)
  1. $data = [  
  2.     123     => 123456789,  
  3.     167     => 456789,  
  4.     264     => 123456,  
  5.     42      => 23456,  
  6.     128     => 1236789,  
  7. ];  
  8.   
  9. $search = 23456;  
  10.   
  11. $filteredData = new RegexIterator(  
  12.     new ArrayIterator($data),  
  13.     "/^.*".$search.".*$/",  
  14.     RegexIterator::ALL_MATCHES  
  15. );  
  16.   
  17. if(count(iterator_to_array($filteredData)) > 0) {  
  18.     printf("Találtam!\n");  
  19. else {  
  20.     printf("Nem találtam!\n");  
  21. }