webForumDet fria alternativet
Logga in / Bli medlem

Mixed

PHP

9 svar · 284 visningar · startad av Nexus86

Medlem sedan okt. 20023 030 inlägg
Trådstart#1

Hur gör man så en parameter får mixed som typ? D.v.s, jag gör en funktion som sparar värden i en array och vill att användaren av funktionen (d.v.s kodaren) ska få lägga till hur många värden som helst i en enda anropning, kan jag göra som nedan?

$array = array();

function addtoarray($mixed) {
    array_push($array, $mixed);
}

addtoarray('index1' => 'nummer1', 'index2' => 'nummer2');

Nu är väl kanske inte detta bästa sättet att göra det på men det är bara ett exempel. Användningen av det kommer bli mycket användbar. :)

Medlem sedan aug. 20002 975 inlägg
#2

Hur hade du tänkt att du skulle läggas in av användaren ?

Du kan ju på något sätt samla upp eller göra om till array det användaren vill lägga till. Har du ett formulär så kallar du alla fält

<input type="text" name="add[]">

Då får du en array du kan lägga till.

Du kan också låta användaren lägga upp sina värden med skiljetecken emellan, t.ex semikolon eller |. Då delar du med explode() och lägger till arrayen.

Medlem sedan okt. 20023 030 inlägg
#3

Menade inte användaren av sidan. Menade kodaren, dvs användaren av funktionen. ;)

Medlem sedan aug. 20002 975 inlägg
#4

Då är det väl lämpligt att kodaren lägger till sina värden som en array.

Men detta är det onödigt att bygga en särskild funktion för, när det redan finns ett flertal du kan använda: array_merge, array_push, array_unshift

Medlem sedan okt. 20023 030 inlägg
#5

Poängen var så att jag undrade om det går att göra (vilket det borde eftersom jag sett det förr). Har tänkt ha funktionen i en klass och tänkte mig ett mer beskrivande namn. Om vi säger att jag vill spara värden i klassen.

class values {
    var $var_array = array();
    var $const_array = array();

    function addVars($mixed_vars) {
        $this->var_array = array_push($this->var_array, $mixed_vars);
    }

    function addConst($mixed_const) {
        $this->const_array = array_push($this->const_array, $mixed_const);
    }
}

Därav en av orsakerna till att jag vill veta hur man gör.

Detta är även det endast ett exempel. :)

Medlem sedan okt. 20023 030 inlägg
#6

Såg nu att jag inte alls sett exakt som jag vill ha. Det jag hade sett gjorde på ungefär samma sätt fast de använde en array som parameter och inte som jag trodde.

Eftersom att jag tolkar det du sa till vad jag ville ha så får ditt svar bli lösningen på tråden. :)

Fast frågan kvarstår, går det att få det som jag skrev i mina andra inlägg? Kan alltid vara bra att veta. :)

Medlem sedan aug. 20002 975 inlägg
#7

Eftersom jag inte förstår riktigt vad du försöker göra, kan jag tyvärr inte ge dig någon lösning, men detta kan kanske ge dig några idéer:

class values {

    var $var_array = array();
    var $const_array = array();

    function addVars($mixed_vars) {
        if (!is_array($mixed_vars)) {
           $mixed_vars = explode("|", $mixed_vars);
        }
        $this->var_array = array_merge($this->var_array, $mixed_vars);
    }

    function addConst($mixed_const) {
        if (!is_array($mixed_const)) {
           $mixed_const = explode("|", $mixed_const);
        }
        $this->const_array = array_merge($this->const_array, $mixed_const);
    }

}

$values = new values;

$add = array('hej', 'hopp'); // array
$values->addVars($add);

$add = 'i|lingonskogen'; // string
$values->addVars($add);

$add = 'tjo flöjt'; // string
$values->addVars($add);

print_r($values->var_array);

Vill du ha associativa arrayer får du utveckla strängomvandlingen lite.

Medlem sedan okt. 20023 030 inlägg
#8

Just nu har jag det så som du skrev i ditt senaste inlägg men jag tänkte mer på om det gick på något sätt att göra som i första inlägget. (Titta nu. Har ändrat lite för att du lättare ska förstå).

Detta är dock ingen nödvändighet eftersom jag får till det på ett annat sätt. Tänkte endast göra koden så nybörjarvänlig som möjligt så de slipper skapa arrayerna själva och därför undrar jag endast om det går.

Medlem sedan aug. 20002 975 inlägg
#9

Det går ju att göra så här:

$array = array();

function addtoarray($array, $mixed) {

    eval("\$add = array($mixed);");

    return array_merge($array, $add);

}

$array = addtoarray($array, "'index1' => 'nummer1', 'index2' => 'nummer2'");

Men det är det knappast någon finess med eftersom det går lika bra att göra så här:

$array = array_merge($array, array('index1' => 'nummer1', 'index2' => 'nummer2'));
Medlem sedan okt. 20023 030 inlägg
#10

Vet att det inte är någon finess. Det var inte meningen heller. Det var mer en fundering än en lösning. :)

Tack!

271 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)