webForumDet fria alternativet

array i klass - problem

1 svar · 241 visningar · startad av Patrik81

Patrik81Medlem sedan okt. 2001538 inlägg
#1

Jag håller på att skriva en liten klass som skall skriva ut html åt mig tänkte jag. Så jag har då skapat en index fil som inkluderar och anropar min klass

index.php

<?php
require_once("class.input.php");

$apa = new Input();

$array = array(type=>"text", name=>"sfdlkj", css=>"text", desc=>"inget_speciellt");
$apa->setInput($array);
echo($apa->getInput()); // funkar fint, skriver ut <input type="text" name="sfdlkj" class="text" value="" /> inget_speciellt <br />

$array2 = array(
    array ( type=>"text", name=>"login", css=>"text", desc=>"Login namn"),
    array ( type=>"password", name=>"password", css=>"text", 
desc=>"Lösenord")
);

$apa->setInput($array2);
echo($apa->getInput()); // skriver ut <input type="" name="" class="" value="" />  <br />
?>

och så klassfilen

<?php
class Input
{
    var $input;

    function setInput($inputArray)
    {
        if (!is_array($inputArray)){
            die("<br />\nERROR!<br />\nsetInput() need an array as argument<br />\n");
        }
		
        if ($inputArray[0] != "Array"){
            // en enda array
            $inputReturnString = "\t<input type=\"" . $inputArray['type'] . "\" name=\"" . $inputArray['name'] . "\" class=\"" . $inputArray['css'] . "\" value=\"" . $inputArray['value'] . "\" /> " . $inputArray['desc'] . " <br />\n";
			
        } else {
            // flera arrayer i en
			
            $inputReturnString = "";
            foreach ($inputArray as $array){
			
                $inputReturnString = $inputReturnString . "\t<input type=\"" . $array['type'] . "\" name=\"" . $array['name'] . "\" class=\"" . $array['css'] . "\" value=\"" . $array['value'] . "\" /> " . $array['value'] . " <br />\n";
				
            }
        }
		
        $this->input = $inputReturnString;
		
    }
	
    function getInput()
    {
        return $this->input;
    }
}
?>

Och som det står i kommentaren i koden, skickar jag bara en vanlig array, så funkar det klockrent, men om jag skickar ett flertal arrayer i arrayen, så skriver den bara ut en enda rad, utan några värden i, trots att den, tycker jag, borde skriva ut en rad för varje array, eftersom jag lägger på den nyskapade raden i varje loop, i den gamla strängen, bakom värdena som redan finns där.

Någon som kan säga vad jag gör för fel här?

MVH Patrik

Patrik81Medlem sedan okt. 2001538 inlägg
#2

Jag löste problemet, det var den där fula kontrollen om det var en enkel array eller flerdimensionell som gjorde allt dumt.

löste det genom att ändra min setInput funktion till detta:

function setInput($inputArray, $mode=0)
{
    if (!is_array($inputArray)){
        die("<br />\nERROR!<br />\nsetInput() need an array as argument<br />\n");
    }
		
    if ($mode == 0){
        // enkel array
        $inputReturnString = "<input type=\"" . $inputArray['type'] . "\" name=\"" . $inputArray['name'] . "\" class=\"" . $inputArray['css'] . "\" value=\"" . $inputArray['value'] . "\" /> " . $inputArray['desc'] . " <br />\n";
    } else {
        // flera arrayer i den stora
        $inputReturnString = "";
        foreach ($inputArray as $array){
            $inputReturnString = $inputReturnString . "\t<input type=\"" . $array['type'] . "\" name=\"" . $array['name'] . "\" class=\"" . $array['css'] . "\" value=\"" . $array['value'] . "\" /> " . $array['desc'] . " <br />\n";
        }
    }
			
    $this->input = $inputReturnString;
		
}
132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)