Názory ke článku PHP a XML-RPC – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Názory ke článku PHP a XML-RPC – Programujte.comNázory ke článku PHP a XML-RPC – Programujte.com

 

Názory ke článku PHP a XML-RPC

lachtan   NOVÝ
2. 1. 2011

V danem kodu vidim hned dve chyby. Jednu ve volani funkce range(), kde je horni index pretazen o jednicku a druhou v porovnavani klicu poli. Pole $array nemusi mit klice serazeny a porovnavani pak neprojde, prestoze pole odpovida pozadavku na uplnou vzestupnou radu celocislenych klicu. Netestoval jsem, ale navrhuju aspon tuto zakladni zmenu



$length = count($array);
$range = range(0, $length - 1);
$keys = array_keys($array);
sort($keys);
if ($keys == $range) {
for ($index = 0; $index < $length; $index ++) {
$val = $array[$index];
$new[] = fixXmlrpcArgs($val);

} else {

hrach, autor článku   NOVÝ
2. 1. 2011

Reagoval na komentář od uživatele lachtan :
Ahoj Lachtane, s přetažením máš pravdu, děkuji za upozornění, omlouvám se a opravuji.

hrach, autor článku   NOVÝ
2. 1. 2011

Reagoval na komentář od uživatele lachtan :
S druhou chybou nesouhlasím. Ve chvíli, kdy nemám lienární pořadí klíčů, pak je to asi z nějakého důvodu. Samozřejmě ne vždy potřebný. Příklad této situace: seřadím si pole dle hodnot a chci zachovat klíče (které např. mohou být identifikátorem). Nicméně ztracením těchto klíčů může dojít k mnohem zásadnější problémům. Pokud klíče nepotřebuji, není nic snažšího než předat array_values($args);

lachtan   NOVÝ
4. 1. 2011

Reagoval na komentář od uživatele Jan Škrášek :
To je sice pravda, ale pokud nemám lineárni pole kličů, nemužu ho převést na čistokrevné pole v XML-RPC. Takové pole bych tedy spíš převedl jako hash (dict). Šlo mi jen o tuto důslednou kontrolu, kdy PHP array můžu převést na XML-RPC pole a kdy ne. Což myslím moje ukázka řeší :)

carloss   NOVÝ
24. 4. 2012

Dalsi chyba - selze to pro jednorozmerne pole s textovym indexem, napriklad

array('key'=>'neco')

Fix:

if (array_keys($array) == $range) { # just array

Nahradit:

if (array_keys($array) === $range) { # just array, === is required here

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý