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


--------------------
Jeśli pomogłem to kliknij Pomógł.
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 winksmiley.jpg


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
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


--------------------
Jeśli pomogłem to kliknij Pomógł.
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ą.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
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


--------------------
Jeśli pomogłem to kliknij Pomógł.
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 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


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
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


--------------------
Jeśli pomogłem to kliknij Pomógł.
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 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ę.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
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 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 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


--------------------
Jeśli pomogłem to kliknij Pomógł.
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 )


--------------------
Jeśli pomogłem to kliknij Pomógł.
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


--------------------
Jeśli pomogłem to kliknij Pomógł.
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. ?>


--------------------
Jeśli pomogłem to kliknij Pomógł.
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. ?>


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
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
"
}


--------------------
Jeśli pomogłem to kliknij Pomógł.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 20.08.2025 - 04:24