Autor Zpráva
zooner
Profil
zdravim, potřeboval bych radu. Jak dostat z cyklu, který mi převede text do bináru, výsledek po hromadě?

tady je kód:

<?
$text = "nějaký text";
$delka = strlen($text);
for($i=0;$i<$delka;$i++){
$do = "1";
$rozdeleni = substr($text ,$i, $do++);

$retezec = decbin(ord($rozdeleni));


echo $retezec;


}

?>




$retezec se skládá z jednotlivých znaků převedených do bináru a potřeboval bych aby se to uložit aby to byl jeden řetězec, napadlo mě pole ale taky mi to nějak nejde.

Díky za rady
tiso
Profil
$text = "nějaký text"; 
$delka = strlen($text); 
$retezec='';
for($i=0;$i<$delka;$i++){ 
  $rozdeleni = substr($text ,$i, 1); 
  $retezec .= decbin(ord($rozdeleni)); 
} 
echo $retezec; 
zooner
Profil
tiso

to vypíše akorát to co proběhlo v posledním cyklu ;-)
Alphard
Profil
zooner
vsadíš se?
zooner
Profil
tiso

máš pravdu omlouvám se, sem si nevšiml tý tečky

Alphard

už radši ani ne

moc díky za radu
Měsíček
Profil
Jakožto nezkušený bych měl dotaz :), nebylo by jednodušší použít přístup jako k poli? :)
 for($i=0,$r='';$i<strlen(($x="nějaký text"));$r.=decbin(ord($x[$i++])));
    echo $r;
Kdybych to měl předělat do přijatelnější formy tak:
<?php
  $x = "nějaký text";
    for ($i=0,$r='';$i<strlen($x);){
      $r .= decbin(ord($x[$i++]));
    }
  echo $r;
?>
označená část se mi zdá trochu přehlednější a rychlejší než [$rozdeleni = substr($text ,$i, 1);].
AM_
Profil
bylo, ale syntaxe je $x{$i++}, s hranatymi zavorkami to mam pocit nefunguje.
imploder
Profil
Měsíček
for($i=0,$r='';$i<strlen(($x="nějaký text")); (...)
Pokud se řetězec nemění, je lepší si jeho délku uložit do proměnné jenom jednou a v cyklu už ji jenom používat jako číslo. Funkce strlen() se pak provede jenom jednou. Když se bude zbytečně délka řetězce počítat při každém provedení cyklu, asi to zas tak nevadí, ale u dlouhých řetězců by už ten rozdíl v rychlosti mohl být dost podstatný.
Měsíček
Profil
Reaguji na implodera:

Díky, dobrá připomínka :) Řekl bych, že první část konstruktu for se provede pouze jednou, takže teď by to mělo být už lepší.
<?php
 for($i=0,$r='',$y=strlen(($x="nějáký text"));$i<$y;$r.=decbin(ord($x[$i++])));
    echo $r;
?>

<?php
    for ($i=0,$r='',$y=strlen(($x="nějáký text"));$i<$y;){
      $r .= decbin(ord($x[$i++]));
    }
  echo $r;
?>


Reaguji na AM_:

Díky za potvrzení :), parser mi hranaté závorky přežvýkal.

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: