Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlanie array z prefixami/sufixami
Forum PHP.pl > Forum > Przedszkole
croc
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.
kamil4u
Nie ma - właśnie implode jest taką funkcją.

  1. echo $prefix.implode($prefix, $changes);
croc
Która ma swoje wady.

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


Wynik:
a
wookieb
If-a już ciężko zrobić?
  1. echo $changes ? $prefix.implode($prefix, $changes) : '';
croc
Jakby nie było ciężko to bym nie zakładał tematu. BTW konwertowanie array na boolean jest trochę słabe.
wookieb
Poniewuż?
croc
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
wookieb
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();
croc
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.
by_ikar
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
croc
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
kamil4u
No to już dostałeś odpowiedź. Nie ma takiej funkcji - użyj implode! Czego jeszcze od nas oczekujesz?
nospor
Odopowiedź na Twoje pytanie: bardziej eleganckiej metody od foreach nie ma.
Czy ta odpowiedź cię satysfakcjonuje?
croc
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.
by_ikar
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
croc
Przy update'ach raczej nie potrzebuję innych operatorów. Przyjąłem do wiadomości, że nie ma innej metody.
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.