Autor Zpráva
MONTYCEK
Profil
Zdravím, poradil by mi někdo jak převést hodnoty v poli na int pokud jsou tam zapsaná jako string, ale jedná se o čísla?
Jedná se o vícerozměrné pole.
Díky
Radek9
Profil
MONTYCEK:
Neznám tu strukturu pole (která taky možná bude důležitá), ale obecně nějak takto:

array_walk_recursive($array, function (&$item) {
  $item = (int)$item;
});

Pokud používáš starší verzi PHP, která nepodporuje anonymní funkce, tak je nutné ji pojmenovat a potom předat její název.
MONTYCEK
Profil
Radek9:
Díky funguje to jak má, ale přesně toto jsem před chvílí zkoušel a nic to nedělalo, tak jsem tam měl asi nějakou chybu.
Jan Tvrdík
Profil
Arraymap + intval
MONTYCEK
Profil
Jan Tvrdík:
Návod kde byla přesně ta kombinace arraymap + intval jsem našel v několika verzích, ale ani jedna nefungovala na tomto poli.
Jan Tvrdík
Profil
MONTYCEK:
A jak vypadá to pole? Tohle by mělo normálně fungovat:

array_map('intval', ['1', '2', 'key' => '3']);


Aha, nevšiml jsem si, že je to vícerozměrné pole. V tom případě je odpověď od Radek9 skutečně optimální řešení a array_map nejde jednoduše použít.
MONTYCEK
Profil
Jan Tvrdík:
no našel jsem to podobně zapsané ješte v kombinaci s jednou funkcí která byla vložena do toho druhého parametru array_map což prý mělo fungovat pro vicerozměrné pole ale nefungovalo to.
Jan Tvrdík
Profil
MONTYCEK:
Spíš pro zajímavost, řešení s array_map by mohlo vypadat třeba takto:

$cb = function ($val) use (& $cb) {
    return is_array($val) ? array_map($cb, $val) : intval($val);
};

$cb(['1', '2' => , 'key' => '3', 'arr' => ['1', '2', 'key' => '3']]);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0