Avatar
tomass
Člen
Avatar
tomass:14.10.2014 15:19

Zdravím, potřebuju v kódu zjistit, jestli se jedná o pole, nebo ne asi u 8 položek, tady mám podmínku 1 položky a mám jich takhle dalších 7 za sebou:

if (is_array($doc->name)) {
      $name = implode(" ", $doc->name);
    }
    else {
      $name = $doc->name;
    }

A chtěl bych se zeptat, jestli nemáte nějaký nápad jak to zjednodušit. Díky za rady.

 
Odpovědět 14.10.2014 15:19
Avatar
Ori
Člen
Avatar
Odpovídá na tomass
Ori:14.10.2014 17:14

a čo tak cyklus? .. možno by nebolo od veci ak by si sem poslal celý ten kód ktorý chceš zredukovať

 
Nahoru Odpovědět 14.10.2014 17:14
Avatar
MrPabloz
Člen
Avatar
Odpovídá na tomass
MrPabloz:14.10.2014 17:44

můžeš to hodit do ternarního operátoru jakby, ale myslím si ,že jednodušší už být nemůže :)

(is_array($doc->name))?$name = implode(" ", $doc->name):$name = $doc->name;
Nahoru Odpovědět 14.10.2014 17:44
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Dominik Klapuch:14.10.2014 18:25

Ahoj, zjednodušit to můžeš, ale nebude to asi moc dobře čitelné a jasné, jako tvoje stávající řešení:

<?php
$doc = "pole nebo hodnota";
$decision = [1 => implode(" ", (array)$doc), 0 => $doc];
echo $decision[(array)$doc === $doc];

Zkus, jestli ti to půjde dle očekávání.

Nahoru Odpovědět 14.10.2014 18:25
Kód a data patří k sobě.
Avatar
Fredep
Redaktor
Avatar
Odpovídá na tomass
Fredep:14.10.2014 18:31

Můžeš volat název proměnné ze stringu z pole, celý kód by pak vypadal nějak takto.

$polozky = array("name", "surname", /* a další věci z těch sedmi */);

foreach ($polozky as $polozka)
  if ( is_array($doc->$polozka) )
    $$polozka = implode(" ", $doc->$polozka); // uloží jako proměnnou s názvem té položky
  else
    $$polozka = $doc->$polozka;
Nahoru Odpovědět 14.10.2014 18:31
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Odpovídá na tomass
Martin Konečný (pavelco1998):14.10.2014 18:46

Já bych to víc nezjednodušoval. Možná jedině pomocí ternárního operátoru.

$name = is_array($doc->name) ? implode(" ", $doc->name) : $doc->name;
 
Nahoru Odpovědět 14.10.2014 18:46
Avatar
tomass
Člen
Avatar
tomass:14.10.2014 19:31

Ok, díky za rady, jen sem si říkal, jestli to není nějak dlouhé že budu mít takovou nálož IFů pod sebou, takže sem měl něco na mysli, jak tu psal Fredep, tak si s tím zkusím pohrát.:)

 
Nahoru Odpovědět 14.10.2014 19:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.