Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie rekordu z tablicy.
Forum PHP.pl > Forum > PHP
Van Pytel
Otóż mam plik który wygląda tak:

  1. <?
  2.  
  3. $tablica = array(
  4. '1' => "qwe",
  5. '2' => "asd",
  6. '3' => "zxc",
  7. '4' => "123",
  8. )
  9.  
  10. ?>


I teraz chciałbym usunąć jakiś rekord z tej tablicy (np: '2' => "asd", ) tak aby plik wyglądał tak:

  1. <?
  2.  
  3. $tablica = array(
  4. '1' => "qwe",
  5. '3' => "zxc",
  6. '4' => "123",
  7. )
  8.  
  9. ?>



Jak mogę tego dokonać? Pewnie kłania się wyrażenie regularne, aby wyszukać element który chce usunąć i potem go usunąć. Niestety na wyrażeniach się nie znam, dlatego proszę o waszą pomoc smile.gif

Dzięki za odpowiedź.
nospor
unset($tablica[2]);
Van Pytel
Właśnie ten sposób nie zadziała.

Inaczej napisze. Mam kod który mi tworzy tablice:

  1. //tworze nagłówek pliku
  2. $data = "<?php \$tablica = array(";
  3.  
  4. //pobieranie danych z bazy
  5. // potem petla ktora wypisuje rekordy:
  6. $data .= " '".$row['id']."' => \"$key\", ";
  7.  
  8. //zamykamy petle i zamykamy plik
  9. $data .= ") ?>";
  10.  
  11. //potem zapisuje do pliku
  12.  
  13. $file = 'test.php';
  14. $current = $data;
  15. file_put_contents($file, $current);


Może dziwny kod, ale mi odpowiada smile.gif

Wczytywanie i dodawanie na koniec też mam ładnie zrobione i działa, teraz chciałbym usunąć z tej tablicy element. Dlatego unset nie zadziała, bo muszę wczytać tablice > wyszukać > usunąć element > zapisać tablice na nowo do pliku, już bez tego rekordu co usunąłem.

Oczywiście przy kasowaniu klucz znam, ale nie znam wartości, więc trzeba jakoś wyszukać i skasować po kluczu.
nospor
Cytat
$data = "<?php \$tablica = array(";

//pobieranie danych z bazy
// potem petla ktora wypisuje rekordy:
$data .= " '".$row['id']."' => \"$key\", ";

//zamykamy petle i zamykamy plik
$data .= ") ?>";

Przecież to nie jest tablica a tekst...

Van Pytel
Ok może być i tekst, ale nie zmienia faktu, że wtedy plik wygląda tak:
Cytat
<?

$tablica = array(
'1' => "qwe",
'2' => "asd",
'3' => "zxc",
'4' => "123",
)

?>


wtedy include i ładnie mogę czytać tą "tablice" ($tablica["$id"]wink.gif.

To jak mogę usunąć taki "tekst"
bastard13
http://php.net/manual/en/function.preg-replace.php
Coś w stylu:
  1. $data = preg_replace('/' . $id . ' => "[a-z0-9]+",/','',$data);

Pisane na szybko i pewnie się gdzieś wysypie, ale chodzi mniej więcej o coś takiego.
Mimo wszystko takie kombinacje nie są czymś ładnym i moim zdaniem powinieneś zmienić coś w kodzie, a nie bawić się w takie operacje.
Van Pytel
Dzięki za pomoc smile.gif Zrobiłem jednak inaczej smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.