Autor Zpráva
Sylar
Profil
Zdravím :-)
dnes podruhé, potřeboval bych pomoct s převodem pole na string.
Script mi hlásí upozornění :
Notice: Array to string conversion in /DISK2/www/0584/becorp.cz/sylar/includes/functions.wp.php on line 102


nelíbí se mu že do fce strlen() cpu proměnnou $value[0] ... u proměnné $value zvětšuji první písmeno

Nevíte někdo co s tím ? :(
Alphard
Profil
$value je řetězec, pole, nebo vícerozměrné pole?
Sylar
Profil
jen pole, nicméně pokud umíš i vicerozměrné budu rád i za to :-)
// EDIT: tedy je to řetězec, ale po zvětšení toho prvního písmene se mi z toho stane pole a do strlen už to nemůžu narvat :(
Alphard
Profil
to, že já umím pracovat s vícerozměrnými poli tobě nepomůže :-)
pod klíčem 0 by u normálního pole měl být přístupný řetězec (teda hádám) a ten notice je tak trochu navíc
dej se ten kód
Alphard
Profil
reakce po editu:
ale po zvětšení toho prvního písmene se mi z toho stane pole a do strlen už to nemůžu narvat
cože? jak se vám z toho po zvětšení stane pole? ten kód
znáte ucfirst()
pokud používáte něco, co zvládá české znaky, mohlo by stačit
implode ('', $value);
Sylar
Profil
Alphard
Já jsem to pochopil poprvé trochu jinak než si to ty myslel :D sry

function word_wrap($arg, $brg) {
    $arg = upper_to_lower($arg);
    $arg[0] = lower_to_upper($arg);
    // $arg = bb_to_tags($arg);
    $arg = str_replace(array('.', ',', '!', '?', ':'), array('. ', ', ', '! ', '? ', ': '), $arg);
    $casti = explode(" ", $arg);
    $pocet = count($casti);
    $arg = "";
    foreach ($casti as $value) {
      if (isset ($upper) && $upper == "first") {
        $value[0] = lower_to_upper($value); // pokud je provedeno tohle hází to chybu na 1 a 2 - pokud tento if proveden není, žádnou notice to nehází
        $upper = "";
      }
      $length = strlen($value); // 1
      if ($length>$brg) $value = wordwrap($value, $brg, "<br />", true);
      if (ereg("^.*[\!\?\.]$", $value)) $upper = "first"; // 2
      $arg .= $value." ";
    }
    return $arg;
  }


// EDIT: ucfirst samozřejmě znám, ale právě kvůli těm českým znakům na to mám svojí fci a pomocí sub_str a dvou polí dokážu zaměnovat i ĚŠČŘŽÝÁÍÉ za ěščřžýáíé
Implode jsem už zkoušel a bohužel :(
Roman23
Profil *
Zkus neco takoveho

$a = 1; //pr a je float

$b = (string)$a; //pr b je string
Roman23
Profil *
$a = 1; //pr a je float

$b = (string)$a; //pr b je string


a stejne ti to bude fungovat i u pole, pokud si jisty ze mas vybran opravdu retezec a ne 2 prvky :o)
Sylar
Profil
Roman23
$value = (string)$value;
paráda :-) funguje to ... super díky moc ... po notice ani slechu

Alphard
tobě též děkuji za vytvralost :-)
Roman23
Profil *
Není zač :o)
Všiml jsem si že moc lidí tuto konstrukci nepouziva. Mozna protoze ji neznaji. Ja to poprve videl pri lusteni kodu v phpMyAdmini. Timto zpusobem se da pretypovat vsechno.
Sylar
Profil
Roman23
jj taky to vidím poprvé :D ale abych řekl pravdu tak jsem taky poprvé něco podobného potřeboval ... nicméně určitě si to budu pamatovat je to opravdu šikovné :-)
Alphard
Profil
Všiml jsem si že moc lidí tuto konstrukci nepouziva.
jak kdo a jak s čím, ten string se IMHO hodí málokdy, ale třeba (int) $_GET['id'] používám dost často
je to jen otázka kontextu, chystal jsem se to navrhnout
Sylar
Profil
Ještě mam jeden problém, když je na konci $arg tečka tak kvůli nastavení $upper se mi cyklus provede ještě jednou a na konec řetězce se mi připojí slovo "Array" které tam samozřejmě nechci ... potřeboval bych nějak zjistit poslední $i a ihned po jeho provedení foreach opustit
Sylar
Profil
Vyřešeno :-)

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: