Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se C a C++. Zároveň využij akce až 80 % zdarma při nákupu e-learningu - více informací.
c++ week
Avatar
VelkyBubak
Člen
Avatar
VelkyBubak:27.8.2016 14:22

mám pole

array('1'=>'0','2'=>'0','3'=>'0','4'=>'0','5'=>'0','6'=>'0','7'=>'0','8'=>'0','9'=>'0', 'Á'=>'A','Č'=>'C','Ď'=>'D','É'=>'E','Ě'=>'E','Í'=>'I','Ň'=>'N','Ó'=>'O','Ř'=>'R','Š'=>'S','Ť'=>'T','Ú'=>'U','Ů'=>'U','Ý'=>'Y','Ž'=>'Z');

a potřeboval bych aby číselné hodnoty byly typu string - takto se načtou jako integer a písmena jako string
Lze toho nějak dosáhnout?

 
Odpovědět
27.8.2016 14:22
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Michal
Člen
Avatar
Michal:27.8.2016 14:54

Z toho, co jsem zjistil, to možné není. PHP automaticky převede veškeré číselné klíče na integer.

$array = array('1'=>'0','2'=>'0','3'=>'0','4'=>'0','5'=>'0','6'=>'0','7'=>'0','8'=>'0','9'=>'0', 'Á'=>'A','Č'=>'C','Ď'=>'D','É'=>'E','Ě'=>'E','Í'=>'I','Ň'=>'N','Ó'=>'O','Ř'=>'R','Š'=>'S','Ť'=>'T','Ú'=>'U','Ů'=>'U','Ý'=>'Y','Ž'=>'Z');

$values = array_values($array);
$keys =  array_map('strval', array_keys($array));

$stringArray = array_combine($keys, $values); // Ve skutečnosti jsou klíče stále číselné

Šlo by to ovšem obejít tak, že by si na začátek každého klíče přidal 0 jakožto neutrální znak.

$array = array('1'=>'0','2'=>'0','3'=>'0','4'=>'0','5'=>'0','6'=>'0','7'=>'0','8'=>'0','9'=>'0', 'Á'=>'A','Č'=>'C','Ď'=>'D','É'=>'E','Ě'=>'E','Í'=>'I','Ň'=>'N','Ó'=>'O','Ř'=>'R','Š'=>'S','Ť'=>'T','Ú'=>'U','Ů'=>'U','Ý'=>'Y','Ž'=>'Z');

$values = array_values($array);
$keys =  array_map(function($string) {return '0' . $string;}, array_keys($array));

$stringArray = array_combine($keys, $values);

Od teď budou všechny klíče ve tvaru '01', '02', ... '0Z', což nezmění celkové pořadí (0 bude u všech klíčů) a zároveň se zařídí, že všechny klíče budou typu string. Takto bude to poslední pole vypadat:

array(24) { ["01"]=> string(1) "0" ["02"]=> string(1) "0" ["03"]=> string(1) "0" ["04"]=> string(1) "0" ["05"]=> string(1) "0" ["06"]=> string(1) "0" ["07"]=> string(1) "0" ["08"]=> string(1) "0" ["09"]=> string(1) "0" ["0Á"]=> string(1) "A" ["0Č"]=> string(1) "C" ["0Ď"]=> string(1) "D" ["0É"]=> string(1) "E" ["0Ě"]=> string(1) "E" ["0Í"]=> string(1) "I" ["0Ň"]=> string(1) "N" ["0Ó"]=> string(1) "O" ["0Ř"]=> string(1) "R" ["0Š"]=> string(1) "S" ["0Ť"]=> string(1) "T" ["0Ú"]=> string(1) "U" ["0Ů"]=> string(1) "U" ["0Ý"]=> string(1) "Y" ["0Ž"]=> string(1) "Z" }
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
27.8.2016 14:54
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 2 zpráv z 2.