Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Zmienna -> tablica, Jak pobrać dane ze zmiennej (kilka tyś. liczb) do tablicy?
japek
post 1.08.2006, 09:39:22
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Jak pobrać dane ze zmiennej (kilka tyś. liczb) do tablicy?
Go to the top of the page
+Quote Post
mike
post 1.08.2006, 09:41:55
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Daj przykład bo chyba nie czaję.
Jak wygląda ta zmienna?
Go to the top of the page
+Quote Post
japek
post 1.08.2006, 09:55:09
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Wartość zmiennej po wyświetleniu to np. 46.3 46.3 46.3 46.3 46.3 46.3 46.3 46.3 46.3 46.4 46.3 46.3 46.3 46.3 46.3 46.3 46.3 46.2 46.2 46.2 46.2 46.2 46.2 46.1 46.1 46.1 46.2 46.2 46.2 46.1 itp... i chciałbym te liczby jakoś do tablicy powrzucać aby było "46.3", "46.3", ...
Go to the top of the page
+Quote Post
nospor
post 1.08.2006, 09:59:24
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl.php.net/manual/pl/function.explode.php
spojrz w przyklad

ps: przenosze na przedszkole
ps2: na przyszlosc probujemy sami w manualu znaleźć smile.gif

edit:
wlasnie znalazlem identyczny niemalze Twoj topic....
Cytat
Potrzebuje rozbić plik tekstowy, w którym dane są oddzielone spacją, czy da sie to zrobić za pomocą explode?
Podzieliłem cały plik na linie i teraz dalej musze to rozbić ale explode potrzebuje chyba jakiegośznaku a ja mam spacje - czy tylko substr to potrafi? HELP
I do niego dostales wlasnie rozwiązanie. jaja se robisz?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
japek
post 1.08.2006, 10:16:19
Post #5





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Nie bo to mi coś nie chce działać mimo że robie jak trzeba, bez błędu. Tak to nawet bym tu nie zaglądał gdyby działało. Nie wiem czy problem nie tkwi w tym, że mimo iż wyświetlany ciąg znaków posiada 1 spację to explode tego nie chce rozbić. Może tak być?
Go to the top of the page
+Quote Post
nospor
post 1.08.2006, 10:20:03
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ale co ci tu nie dziala?
  1. <?php
  2. $zm = '46.3 46.3 46.3 46.3 46.3 46.3 46.3 46.3 46.3 46.4 46.3 46.3 46.3 46.3 46.3 46.3 
    46.3 46.2 46.2 46.2 46.2 46.2 46.2 46.1 46.1 46.1 46.2 46.2 46.2 46.1'
    ;
  3.  
  4. echo '<pre>';
  5. $ar = explode(' ', $zm);
  6. print_r($ar);
  7. echo '</pre>';
  8. ?>

Moze reszte danych masz "zepsutą"?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
japek
post 1.08.2006, 10:31:08
Post #7





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Dane pochodzą z pliku, wszystko jest sprawne. Rozbijam plik tekstowy na linie, potem z kazdej linii biorę kilka potrzebnych znaków (dane mam w kilku rzędach) i mam już potrzebne dane ale teraz są one w zmiennej $t8

$plik=file('1.LOG');

for($i=2; $i<30; $i++) {
$t=$plik[$i];
$t8=(substr($t, 22,6));

i jak używałem explode to nic nie działało sad.gif
Go to the top of the page
+Quote Post
nospor
post 1.08.2006, 10:36:07
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




uzywaj bbcode.

ale ty explode robisz w petli na $t8? Bo jak nie to za kazdym obiegiem petli ta zmienna jest nadpisywana i tracisz dane. Pokaz caly kod, pokaz przykladowych pare linii z pliku. Pamietaj rownież o tym, ze file() zwraca znaki konca wierszy.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
japek
post 2.08.2006, 09:07:50
Post #9





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Wcześniej nie wiedziałem że to tworzy tyle tablic ile linii z pliku (dlatego myślałem że cośnie tak póki nie odpaliłem podglądu z <pre>), tylko teraz jeszcze połączyć te tablice w jedną i będzie ok.

W pętli tworzę takie tablice i chciałbym je połączyć na koniec w jedną tablicę. Nie wiem czy funkcją Merge_array się da bo nie ma konkretnych nazw tablic. Po wyświetleniu na stronie <pre> mam takie tablice (jest ich znacznie więcej):

array(1) {
[0]=>
string(4) "41.1"
}

array(1) {
[0]=>
string(4) "41.5"
}

array(1) {
[0]=>
string(4) "45.9"
}
Go to the top of the page
+Quote Post
mike
post 2.08.2006, 09:09:58
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


A jak tworzysz te tablice? Pokaż kod.

Skoro dajesz je do print_r() to masz nazwy zmiennych, czy nie?
Go to the top of the page
+Quote Post
japek
post 2.08.2006, 09:21:09
Post #11





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


  1. <?php
  2. $plik=file('1.LOG');
  3.  
  4. for($i=2; $i<50; $i++) {
  5. $t=$plik[$i];
  6. $t8=(substr($t, 22,6));
  7.  
  8. $y=explode(" ", $t8);
  9. ?>
Go to the top of the page
+Quote Post
mike
post 2.08.2006, 09:24:37
Post #12





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Przy każdym obrocię pętli wstawiaj sobie aktualną tablicę do jakiejś innej - zbiorczej.
array_push()

Zakładam, że w Twoim kodzie klamra, która zgubiłeś, jest na końcu smile.gif
Go to the top of the page
+Quote Post
nospor
post 2.08.2006, 09:25:56
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@japek 3 mozliwosci:
1) uzywaj array_merge w petli
2) zmienna $t8 najpierw zbuduj ze wszystkich liczb a potem na niej zrob explode
2) yyy, patrzac na twoj print_r widac, ze zawsze tam jest jeden element, czyli jedna liczba. to na grzyba bawic sie w explode? skoro tam jest jedna liczba to nie trzeba nic dzielic tylko ja zapisywac do tablicy:
  1. <?php
  2. $tab = array();
  3. for($i=2; $i<50; $i++) {
  4. $t=$plik[$i];
  5. $t8=(substr($t, 22,6));
  6. $tab[] = $t8;
  7. }
  8. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
japek
post 2.08.2006, 10:52:15
Post #14





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Wszystko racja smile.gif jak zwykle kombinowałem niepotrzebnie i sie w tym pogubiłem, ale już ok, dzięki!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:59