Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php] Problem z explode i implode
Morale
post
Post #1





Grupa: Zarejestrowani
Postów: 152
Pomógł: 2
Dołączył: 28.03.2007

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


skrypt:

  1. <?php
  2. $file = file('plik.info');
  3. $blok_osob = explode("\n", $file);
  4. $blok_osob2 = implode(",", $blok_osob);
  5. ?>


plik plik.info:

Cytat
1
44
22
989
2


Ten skrypt miał z tego pliku (plik.info) wyświetlić zawartość ale zamiast \n pokazywać przecinek czyli:

Cytat
1,44,22,989,2,


Ale to coś nie działa.

Po prostu jak zrobić by znak nowej linii zamienić na przecinki ? Ale explode i implode, a nie str_replace.

Bo jak potem sprawdzam:
  1. <?php
  2. if (in_array(5, $blok_osob2)) {
  3.  
  4. } else {
  5.  
  6. }
  7. ?>


to jest błąd:
Cytat
Warning: in_array() [function.in-array]: Wrong datatype for second argument i


Ten post edytował Morale 12.01.2008, 12:12:50
Go to the top of the page
+Quote Post
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Funkcja file, czyli

  1. <?php
  2. $file = file('plik.info');
  3. $blok_osob2 = implode(",", $file);
  4. ?>


W manualu jest wszystko (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Morale
post
Post #3





Grupa: Zarejestrowani
Postów: 152
Pomógł: 2
Dołączył: 28.03.2007

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


mam taki kod teraz:

  1. <?php
  2. $plik_osob = file('plik.info');
  3. $blok_osob = implode(", ", $plik_osob);
  4.  
  5.  
  6. $blokowane_osoby_id = $blok_osob; 
  7.  
  8. if (in_array($nazwa_pliku, $blokowane_osoby_id)) {
  9.  
  10. } else {
  11.  
  12. }
  13. ?>


błąd nadal:

Cytat
Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxx on line 666


Linia 666 ( :-> ):

  1. <?php
  2. if (in_array($nazwa_pliku, $blokowane_osoby_id)) {
  3. ?>


Ten post edytował Morale 12.01.2008, 13:11:15
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




W linii 666 jest:
  1. <?php
  2. if (in_array($nazwa_pliku, $blokowane_osoby_id)) {
  3. ?>

czy:
  1. <?php
  2. if (in_array($nazwa_pliku, $blokowane_osoby)) {
  3. ?>


Jeśli to pierwsze, to $blokowane_osoby_id nie jest tablicą.
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. <?php
  2. $plik_osob = file('plik.info');
  3. $blok_osob = implode(", ", $plik_osob);
  4.  
  5. // drugi parametr powinien byc tablica, a nie stringiem
  6. if (in_array($nazwa_pliku, $plik_osob)) {
  7.  
  8. } else {
  9.  
  10. }
  11. ?>

Po zmienną $nazwa_pliku powinienieś podstawić id osoby, którą chcesz sprawdzić pod kątem banowania.
Go to the top of the page
+Quote Post
Morale
post
Post #6





Grupa: Zarejestrowani
Postów: 152
Pomógł: 2
Dołączył: 28.03.2007

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


@phpion - $nazwa_pliku = 1

@batman - czemu nie jest (ja tam tylko usunąłem te "_id") ?


Nie wiem nadal co jest źle...

Jak daję:
  1. <?php
  2. if (in_array($nazwa_pliku, array('25'))) {
  3. ?>


to działa ..

Ten post edytował Morale 12.01.2008, 13:14:15
Go to the top of the page
+Quote Post
batman
post
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Teraz już jest (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Wcześniej było:
  1. <?php
  2. $blokowane_osoby = $blok_osob;
  3. ?>


edit
W instrukcji warunkowej użyłeś zmiennej $blokowane_osoby_id, do której nie przypisałeś tablicy

Tak powinno działać:
  1. <?php
  2. $plik_osob = file('plik.info');
  3. $blok_osob = implode(", ", $plik_osob);
  4.  
  5. if (in_array($nazwa_pliku, $plik_osob)) {
  6.  
  7. } else {
  8.  
  9. }
  10. ?>



edit poprawiłem błąd w instrukcji warunkowej.

Ten post edytował batman 12.01.2008, 13:23:05
Go to the top of the page
+Quote Post
Morale
post
Post #8





Grupa: Zarejestrowani
Postów: 152
Pomógł: 2
Dołączył: 28.03.2007

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


Chyba wiem co, teraz tak dałem:

  1. <?php
  2. if (in_array($nazwa_pliku, array($blokowane_osoby_id))) {
  3. ?>


I już nie wyświetla błędu...

Jednakże nic nie robi. Nie ważne czy mam to id, czy nie mam

Ten post edytował Morale 12.01.2008, 13:25:45
Go to the top of the page
+Quote Post
phpion
post
Post #9





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(batman @ 12.01.2008, 15:12:49 ) *
Teraz już jest (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Wcześniej było:
  1. <?php
  2. $blokowane_osoby = $blok_osob;
  3. ?>


edit
W instrukcji warunkowej użyłeś zmiennej $blokowane_osoby_id, do której nie przypisałeś tablicy

Tak powinno działać:
  1. <?php
  2. $plik_osob = file('plik.info');
  3. $blok_osob = implode(", ", $plik_osob);
  4.  
  5. if (in_array($nazwa_pliku, $blok_osob)) {
  6.  
  7. } else {
  8.  
  9. }
  10. ?>

@batman: to nie ma prawa działać! $blok_osob to string! poczytaj o parametrach w in_array" title="Zobacz w manualu PHP" target="_manual

@Morale: weź odpal mój kod i zobacz czy Ci zadziała. Jeśli w pliku plik.info masz id zbanowanych ludków, a $nazwa_pliku przechowuje id usera którego chcesz sprawdzić to powinno działać.
Go to the top of the page
+Quote Post
batman
post
Post #10





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@phpion
Masz rację. Nie tą zmienną skopiowałem.

@Morale
Sorki za błąd, za chwilę go poprawię.
Go to the top of the page
+Quote Post
phpion
post
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@batman: spoko (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) hehe

Ponawiam:
  1. <?php
  2. $plik_osob = file('plik.info');
  3. $blok_osob = implode(", ", $plik_osob);
  4.  
  5. // drugi parametr powinien byc tablica, a nie stringiem
  6. if (in_array($nazwa_pliku, $plik_osob)) {
  7. echo 'masz bana!';
  8. } else {
  9. echo 'wstep wolny';
  10. }
  11. ?>


Ten post edytował phpion 12.01.2008, 13:28:34
Go to the top of the page
+Quote Post
Morale
post
Post #12





Grupa: Zarejestrowani
Postów: 152
Pomógł: 2
Dołączył: 28.03.2007

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


Cytat(phpion @ 12.01.2008, 13:28:01 ) *
@batman: spoko (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) hehe

Ponawiam:
  1. <?php
  2. $plik_osob = file('plik.info');
  3. $blok_osob = implode(", ", $plik_osob);
  4.  
  5. // drugi parametr powinien byc tablica, a nie stringiem
  6. if (in_array($nazwa_pliku, $plik_osob)) {
  7. echo 'masz bana!';
  8. } else {
  9. echo 'wstep wolny';
  10. }
  11. ?>


1. Ten kod nie pomyli "1" z "11" ?

2. Błędu nie wyświetla, ale nawet jak się id znajduje to nie blokuje.

Plik:

Cytat
25
1
3


Ten post edytował Morale 12.01.2008, 13:31:37
Go to the top of the page
+Quote Post
phpion
post
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Morale @ 12.01.2008, 15:31:12 ) *
1. Ten kod nie pomyli "1" z "11" ?

Nie.

Cytat(Morale @ 12.01.2008, 15:31:12 ) *
2. Błędu nie wyświetla, ale nawet jak się id znajduje to nie blokuje.

Testowałeś już z echo w warunku czy bez nich? Jeśli z nimi to daj rezultat:
  1. <?php
  2. echo $nazwa_pliku;
  3. print_r($plik_osob);
  4. ?>


Ten post edytował phpion 12.01.2008, 13:33:55
Go to the top of the page
+Quote Post
Morale
post
Post #14





Grupa: Zarejestrowani
Postów: 152
Pomógł: 2
Dołączył: 28.03.2007

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


wynik:

Cytat
25
Array ( [0] => 25 [1] => 1 [2] => 3 )
Go to the top of the page
+Quote Post
phpion
post
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Czyli wszystko ok. Pokaż cały swój kod.
Go to the top of the page
+Quote Post
Morale
post
Post #16





Grupa: Zarejestrowani
Postów: 152
Pomógł: 2
Dołączył: 28.03.2007

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


  1. <?php
  2. $plik_osob = file('plik.info');
  3.  
  4.  
  5.  
  6. if (in_array($nazwa_pliku, $plik_osob)) {
  7. //jesli rowna sie
  8.  
  9. echo 'BAN !';
  10.  
  11. } else {
  12. //jesli sie nie rowna
  13.  
  14. //inny kod
  15. }
  16. ?>


Jak daję :

  1. <?php
  2. if (in_array($nazwa_pliku, array('25'))) {
  3. ?>


To działa, ale muszę to zautomatyzować. Więc muszę wczytywać plik.

Ten post edytował Morale 12.01.2008, 13:43:16
Go to the top of the page
+Quote Post
phpion
post
Post #17





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




A tak?

  1. <?php
  2. //$plik_osob = file('plik.info');
  3. $plik_osob = array(1, 2, 3);
  4. $nazwa_pliku = 2;
  5.  
  6.  
  7.  
  8. if (in_array($nazwa_pliku, $plik_osob)) {
  9. //jesli rowna sie
  10.  
  11. echo 'BAN !';
  12.  
  13. } else {
  14. //jesli sie nie rowna
  15.  
  16. //inny kod
  17. }
  18. ?>


Ten post edytował phpion 12.01.2008, 13:44:17
Go to the top of the page
+Quote Post
Morale
post
Post #18





Grupa: Zarejestrowani
Postów: 152
Pomógł: 2
Dołączył: 28.03.2007

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


ma ktoś jakiś pomysł na wczytanie numerków z pliku żeby to działało ?


próbowałem też tak, ale ciągle pokazuje "nie działa" (choć $nazwa_pliku jest w $linia, bo sprawdzałem):

  1. <?php
  2. $linia = Array();
  3.  
  4. $fp = fopen("plik.info", "r"); 
  5. flock($fp, LOCK_EX); 
  6. while (!feof ($fp)) { 
  7. $linia[] = fgets($fp); 
  8. }
  9.  
  10.  
  11.  
  12. if (in_array($nazwa_pliku, $linia)) {
  13.  
  14. echo "ban !";
  15. } else {
  16.  
  17. echo "nie działa";
  18. }
  19. ?>
Go to the top of the page
+Quote Post
batman
post
Post #19





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Pofatygowałem się i uruchomiłem ten skrypt. Co się okazało - działa.
Zrób tak i nasz co się wyświetliło:
  1. <?php
  2. $plik_osob = file('plik.info');
  3.  
  4. echo '<pre>';
  5. echo 'nazwa_pliku: ';
  6. var_dump($nazwa_pliku);
  7. echo '<br />';
  8. echo 'plik_osob: ';
  9. var_dump($plik_osob);
  10. echo '</pre>';
  11.  
  12. if (in_array($nazwa_pliku, $plik_osob)) {
  13. echo 'BAN !';
  14. } else {
  15. echo 'NIE BAN!';
  16. }
  17. ?>
Go to the top of the page
+Quote Post
Morale
post
Post #20





Grupa: Zarejestrowani
Postów: 152
Pomógł: 2
Dołączył: 28.03.2007

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


Cytat
nazwa_pliku: string(2) "25"

plik_osob: array(4) {
[0]=>
string(3) "1
"
[1]=>
string(4) "33
"
[2]=>
string(4) "25
"
[3]=>
string(3) "4
"
}
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 17:49