Diskuze: Zjednodušení podmínky

PHP PHP Zjednodušení podmínky American English version English version

Avatar
tomass
Člen
Avatar
tomass:

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:

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:

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:

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:

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):

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:

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.