Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z zapisaniem tablicy do pliku
Forum PHP.pl > Forum > Przedszkole
Qechua
Mam coś takiego:


  1. $rob = array_unique($rob);
  2. foreach ($rob as $tt) {
  3. $aResults[] = array( "id"=>0,"value"=>$tt);
  4.  
  5. $string = implode("\n",$aResults);
  6. $handle = fopen("tmp/pl.txt", "w");
  7. fwrite($handle,$string);
  8. fclose($handle);
  9. }


Plik co prawda zapisuje do pliku, ale tylko:

Array
Array
Array
Array
Array
Array
Array
Array
Array
Array


Próbowałem zamienić:

  1. $string = implode("\n",$aResults);

na
  1. $string = implode("\n",$aResults['value']);

itd, ale w takim wypadku nic nie zapisuje.

Co robię źle ?
nospor
nie: $aResults[] = array( "id"=>0,"value"=>$tt);
a: $aResults = array( "id"=>0,"value"=>$tt);
Qechua
Musi być:
  1. $aResults[] = array( "id"=>0,"value"=>$tt);

gdyż po usunięciu [] cały skrypt przestaje mi działąć (zapisywanie do pliku jest tylko
dla sprawdzenia pewnej rzeczy)

Jak więc w inny sposób zapisać tablicę do pliku ?
nospor
Musi to na rusi tongue.gif

  1. $tab = array( "id"=>0,"value"=>$tt);
  2. $aResults[] = $tab;
  3.  
  4. $string = implode("\n",$tab);
Qechua
No już lepiej, ale zapisuje mi tylko 1 wiersz zamiast całej tablicy ;/
Może podam większą część kodu w któej występuje problem:

  1. if ($len)
  2. {
  3.  
  4. $query = $_GET['query']." ".$_GET['field_name']." LIKE '".mysql_real_escape_string($input)."%'";
  5.  
  6. if($limit > 0) $query .= " LIMIT $limit";
  7.  
  8. $result = mysql_query($query, $link);
  9.  
  10. while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  11. $row2=trim($row[$_GET['field_name']]);
  12. $row2 = str_replace('-', '', $row2);
  13. $rob[] = strtolower($row2);
  14. }
  15.  
  16. $rob = array_unique($rob);
  17. foreach ($rob as $tt) {
  18. $aResults[] = array( "id"=>0,"value"=>$tt);
  19.  
  20.  
  21.  
  22. $tab = array( "id"=>0,"value"=>$tt);
  23.  
  24. $aResults[] = $tab;
  25.  
  26. $string = implode("\n",$tab);
  27.  
  28.  
  29. $handle = fopen("tmp2/ple.txt", "w");
  30. fwrite($handle,$string);
  31. fclose($handle);
  32. }
  33.  
  34. }
  35.  
  36. header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
  37. header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
  38. header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  39. header ("Pragma: no-cache"); // HTTP/1.0
  40. header("Content-Type: application/json");
  41.  
  42. echo "{\"results\": [";
  43. $arr = array();
  44. for ($i=0;$i<count($aResults);$i++) {
  45. $arr[] = "{\"id\": \"".$aResults[$i]['id']."\", \"value\": \"".$aResults[$i]['value']."\", \"info\": \"\"}";
  46. }
  47. echo implode(", ", $arr);
  48. echo "]}";


Ogólnie chodzi o to, że ten skrypt powinien usunąć mi powtarzające się wiersze w tablicy, jednak nie usuwa powtórzeń, więc chciałem spróbować
zapisać tą tablicę do pliku i sprawdzić czy nie ma tam jakichś białych znaków, które przeszkadzają w usuwaniu powtórzeń, no ale coś mi to nie idzie...
nospor
No bo za kazdym razem nadpisujesz zawartosc pliku. NIe nadpisuj a dopisuj. Otworz plik z własciwym atrybutem.

A w ogóle ja to bym dał poza pętlą i juz:
  1. file_put_contents('jakisplik.txt',print_r($aResults,true));

I juz
Qechua
No rzeczywiście, już jest ok.
Wielkie dzięki smile.gif

Okazuje się że mam niepotrzebne spacje, ale nie na początku ani na końcu (w końcu używam trim),
ale w środku, między wyrazami.

Jak najprościej się ich pozbyć ?
nospor
str_replace() - zamieniaj spacje na "nic"
Qechua
Troszkę nieprecyzyjnie się wyraziłem.
Chodzi o to, że jedna spacja ma być, ale nie więcej, czyli chciałbym zamienić
wszystkie spacje, których jest co najmniej 2 lub więcej na jedną.

Jakiś preg_replace ?
nospor
Cytat
Jakiś preg_replace ?
Dokładnie smile.gif
A na przyszłość pisz od razu dokładniej smile.gif
Qechua
A konkretnie taki, gdyby ktoś potrzebował:
  1. $row2 = preg_replace('/\s+/', ' ', $row2);

Dzięki za pomoc Nospor :]
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.