Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyświetlanie array z prefixami/sufixami
croc
post
Post #1





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Proste pytanie. Czy tablice w PHP mają jakąś elegancką metodę na zamianę takiego kodu:
  1. $prefix = 'a';
  2. $changes = array(1, 4, 5);

na ciąg znaków 'a1a4a5' ?

Oczywiście nie pytam jak osiągnąć taki efekt tylko czy jest do tego elegancka metoda bez żadnych foreachów ani implode + dopisanie na końcu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Nie ma - właśnie implode jest taką funkcją.

  1. echo $prefix.implode($prefix, $changes);


Ten post edytował kamil4u 4.12.2011, 23:07:37


--------------------
Go to the top of the page
+Quote Post
croc
post
Post #3





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Która ma swoje wady.

  1. $array = array();
  2. $prefix = 'a';


Wynik:
a
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




If-a już ciężko zrobić?
  1. echo $changes ? $prefix.implode($prefix, $changes) : '';


--------------------
Go to the top of the page
+Quote Post
croc
post
Post #5





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Jakby nie było ciężko to bym nie zakładał tematu. BTW konwertowanie array na boolean jest trochę słabe.

Ten post edytował croc 4.12.2011, 23:40:08
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Poniewuż?


--------------------
Go to the top of the page
+Quote Post
croc
post
Post #7





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Taka jest moja opinia o żonglowaniu typami w PHP, po prostu czasem tego nie trawię. A jak widzę kwiatki typu:

  1. if(empty($_GET['number'])) {
  2. // nie podano liczby
  3. }


To mi smutno. smile.gif
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Opinia bez argumentów jest nic nie warta...
A teraz argument - nie jest w tym nic złego ponieważ to bardzo wygodna konstrukcja.
Aktualnie zajmuje 2 miejsce z najszybszych metod sprawdzenia czy wartość jest prawdziwa.
Jednakże jeżeli chcesz sprawdzić czy tablica jest pusta to najwydajniejszą opcją jest
  1. $tab === array();


--------------------
Go to the top of the page
+Quote Post
croc
post
Post #9





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Podanie wartości 0 to nie jest podanie wartości? Co śmieszniejsze, takie przykłady wykorzystania empty pojawiły się nawet w książce ojca PHP. Przepraszam, ale dla mnie to jest naprawdę padaka.
Go to the top of the page
+Quote Post
by_ikar
post
Post #10





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Zamiast implode możesz sobie to strzelić poprostu w foreach:

Kod
<?php

$arr = array(1, 2, 3, 4, 5);
$prefix = 'a';
$str = '';

foreach($arr as $row)
{
    $str .= $prefix.$row;
}

echo $str;


W przypadku pustej tablicy foreach zwyczajnie nie wykona żadnej pętli, zapakować to w jakąś funkcje i po sprawie wink.gif
Go to the top of the page
+Quote Post
croc
post
Post #11





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Dziękuję, ale:

Cytat(croc @ 4.12.2011, 22:50:11 ) *
Oczywiście nie pytam jak osiągnąć taki efekt tylko czy jest do tego elegancka metoda bez żadnych foreachów ani implode + dopisanie na końcu.



Cytat(by_ikar @ 5.12.2011, 08:57:31 ) *
Zamiast implode możesz sobie to strzelić poprostu w foreach
Go to the top of the page
+Quote Post
kamil4u
post
Post #12





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


No to już dostałeś odpowiedź. Nie ma takiej funkcji - użyj implode! Czego jeszcze od nas oczekujesz?


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #13





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




Odopowiedź na Twoje pytanie: bardziej eleganckiej metody od foreach nie ma.
Czy ta odpowiedź cię satysfakcjonuje?


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

"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
croc
post
Post #14





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Tak. Pytałem, bo array mają wiele przeróżnych funkcji, więc może i taka by się znalazła. A chodziło mi konkretnie o wrzucanie ciągu " = ?, " do zapytań w PDO na podstawie tabeli zawierającej pola i nowe wartości do nadpisania.
Go to the top of the page
+Quote Post
by_ikar
post
Post #15





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Powiem ci szczerze że tak czy siak musiałbyś użyć foreach z prostego powodu. Nie tylko z jednego operatora w przypadku where się korzysta, są jeszcze inne operatory (!=, >= itp) więc w tym foreach dodatkowo wstawisz sobie jeszcze sprawdzanie czy ktoś umieścił jakiś operator, jeżeli nie dopiero wtedy dajesz standardowy operator. No o ile podobnie chcesz to zrobić jak w przypadku kohany: http://docs.kohanaphp.com/libraries/database/builder#where
Go to the top of the page
+Quote Post
croc
post
Post #16





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Przy update'ach raczej nie potrzebuję innych operatorów. Przyjąłem do wiadomości, że nie ma innej metody.
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 Aktualny czas: 19.08.2025 - 20:36