Autor Zpráva
kuba123
Profil *
Jak opravit toto:

$this->post[$k] = isset($_POST[$k]) ? $_POST[$k] : null;
aby to fungovalo i v případě že $k neexistuje v poli $this->post? Za předpokladu, že $k může být string "end", "home", "next" nebo "previous". Čili pokud hodnota argumentu end nebyla uvedena, pak by se měl vytvořit index "end" a hodnotou null. Prostě nemohu přijít na to jak vytvořit ten klíč $k když neexistuje. Je na to nějaká funkce, abych ho musel předem definovat v tom atributu post?
tiso
Profil
kuba123: Kde to $k berieš? Daj si ten riadok do cyklu foreach($k_possible_values as $k) { ... }
kuba123
Profil *
Ono to je v cyklu:

    if ($arr_null) foreach ($arr_null as $k) { 
      $this->post[$k] = isset($_POST[$k]) ? $_POST[$k] : null;      
      if ($_POST[$k]<>null) $c++;
      }



Je to metoda, která se pokouší nastavit určitý argument převzatý při odesílání formuláře. Může nastavit buď jeden atribut nebo více. Každopádně, když ten argument tedy ten formulářový prvek nebyl odeslaný formulářem, pak bych chtěl nastavit $this->post[$k] jako null. Ale to hodí chybu protože ještě neexistuje...


Ta metoda neobsahuje argument možných atributů.... Pouze argument co se má nastavit.


Myslel jsem že by třeba mohla být nějaká funkce, která přidá nový prvek s indexem k do pole post


Jestli teda neexistuje žádná funkce tak bych to vyřešil takto:
@$this->post[$k] = null;

    $c=-1;
    if ($arr_null) foreach ($arr_null as $k) { 
      @$this->post[$k] = null; 
      $this->post[$k] = isset($_POST[$k]) ? $_POST[$k] : null;      
      if ($_POST[$k]<>null) $c++;
      }
tiso
Profil
kuba123: ono to funguje, teda za predpokladu, že máš v tej premennej $arr_null máš všetky možné hodnoty $k. Problém je ten riadok 3 (5), ten vráti
Notice: Undefined index: end in ...
Tori
Profil
kuba123:
Taky by to šlo tak, že vlastnost post bude definovaná s výchozími hodnotami (anebo je tam předáte zvenčí z nějakého konfiguráku) a potom ty z nich, které se vyskytují i v $_POST, přepíšete:

class NejakaTrida
{
    public $post = array(
        'end' => null,
        'home' => null,
        'next' => null,
        'previous' => null,
    );

    public function nejakaMetoda($postData = array())
    {
        foreach ($this->post as $key => $val) {
            if (isset($postData[$key]))
                $this->post[$key] = $postData[$key];
        }
    }
}

$obj = new NejakaTrida;
$obj->nejakaMetoda($_POST);

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: