Witam serdecznie,
Array
(
[0] = 27|2014-03-26 22:03:26
[1] = 18|2014-03-05 10:39:36
[2] = 15|2014-03-26 17:40:17
[3] = 21|2014-03-05 18:04:19
[4] = 18|2014-03-26 22:17:16
)
Witam serdecznie,
Array
(
[0] = 27|2014-03-26 22:03:26
[1] = 18|2014-03-05 10:39:36
[2] = 15|2014-03-26 17:40:17
[3] = 21|2014-03-05 18:04:19
[4] = 18|2014-03-26 22:17:16
)
foreach ($arr as $key => $value) {
if (substr($value, 0, 2) == "18") {
unset($arr, $key);
}
}
Chyba unset($arr[$key]);
kod niestety nie działa
dziki, pomoglo
Czy nie będzie problemu w momencie gdy ta tablica będzie miała 7000 rekordów??
Osobiście dla bezpieczeństwa dałbym sprawdzanie pierwszych trzech znaków tj. 18| - ot jak np. będzie 181.
Problemu nie będzie o ile będziesz to odpalać przez CLI, przez WebRequest to kwestia wydajności maszyny.
Dla tablic najlepiej użyć:
$tab=preg_grep("/^18/",$tab,PREG_GREP_INVERT);
Skąd bierzesz tę tablicę? Pewnie z pliku tekstowego. Więc niema sensu go zamieniać na tablicę. Jeśli przetwarzasz logi to lepiej żebyś użył wyrażeń regularnych. Powinny być o wiele szybsze niż przelatywanie po tablicy. Więcej o wyrażeniach reguralnych:
http://gajdaw.pl/php/wyrazenia-regularne-pcre-php-tutorial/print.html#R5
Przykładowo. Wczytujesz plik :
$a=file_get_contents(‘log1.txt’);
Usuwasz linijki zaczynające się na od ‘18’ po których jest 20 znaków i jest (lub go nie ma) zakończenie linii :
$a=preg_replace(’/^18.{20}\r?\n?/m’,’’,$a);
Zapisujesz do pliku za pomocą file_put_contents() lub zamieniasz na tablice za pomocą .explode().
Jak nie chcesz wczytywać z pliku tylko z tablicy to tablice zamieniasz na string za pomocą implode().
Ewentualnie można użyć innego wyrażenia, które powinno działać szybciej.
$a="\r\n".file_get_contents(‘log1.txt’); // Na początku dodajemy znak końca linii będziemy od niego wyszukiwać.
$a=preg_replace(’/\r\n18.{20}/’,’’,$a); // plik musi mieć zakończenia linii Windosowe, czyli \r\n.
A najprościej i najwydajniej będzie:
$b = array_filter($a, function($e) {
return strpos($e, '18|') !== 0;
});
Dziękuję bardzo za odpowiedź i pomoc.
tablice mam gotowe, z mysql… Sa poczatkowo w formacie (przykładowo): a:2:{i:1;s:22:“27|2014-03-26 23:24:35”;i:2;s:22:“18|2014-03-26 22:17:16”;}
zamieniam to sobie na tablicę:
$tablica = unserialize($pr);
i wtedy muszę z tego wyciąć dane okrojone o wybrane wartości (przykładowo te 18)… Problem w tym, że tych rekordów w tablicy jest dużo i nie wiem co będzie wydajne…