2016-12-19 4 views
1

I eine selectbox unter Verwendung von zwei Arrays erzeugt werden soll, eine, den Optionswert und Optionsnamen und einen, den Datenwertes für die Optionforeach Schleife mit zwei Arrays

Zum Beispiel:

"arra1" => array("1" => "orange", "2" => "banana", "3" => "apple"), 
"data-array" => array("first" , "second" , "third"), 

und Ergebnis muss

sein
foreach(???) { 

<option value=1 data-value="first">orange</option> 
<option value=2 data-value="second">banana</option> 
<option value=3 data-value="third">apple</option> 

} 

Vorschläge? Dank

+2

Müssen Sie zwei Arrays verwenden? Der beste Vorschlag, den ich habe, ist einen zu verwenden. –

+0

Verwenden Sie ein Array oder eine for-Schleife meiner Meinung nach – MacBooc

Antwort

3

PHPs array_values Funktion sowohl Array erhalten mit dem gleichen Indizierung, dann tut die foreach:

$data = [ 
    "arra1" => array("1" => "orange", "2" => "banana", "3" => "apple"), 
    "data-array" => array("first" , "second" , "third") 
]; 

$labels = array_values($data["arra1"]); 
$values = array_values($data["data-array"]); 

foreach($labels as $index => $value) { 
    $optionValue = $index+1; 
    echo "<option value={$optionValue} data-value='{$values[$index]}'>{$labels[$index]}</option>"; 
} 
3

Es nutzt eigentlich ein array ($key+1) der Schlüsselwert von $array_1 ist, wenn Sie Array-Schlüsselwert von 1 nicht 0 beginnt, ist dies ein Vorschlag:

<?php 

$arry_1 = array("1" => "orange", "2" => "banana", "3" => "apple"); 
$data_array = array("first" , "second" , "third"); 

foreach ($data_array as $key => $value) { 
    echo '<option value="'.($key+1).'" data-value="'.$value.'">orange</option>'; 
} 
?> 
+0

Sie können $ arry_1 oder $ data_array einzigen Array nur für foreach verwenden, wenn nicht unbedingt zwei Array erforderlich –

1

ich glaube, Sie dies mit einem assoziativen Array erreichen können, wie unten-

//you can construct associative array like this 
$array = array("first"=>"orange","second"=>"banana","third"=>"apple"); 
$count =1; 
foreach($array as $key=>$val) 
{ 
    echo '<option value='.$count.' data-value="'.$key.'"'.'>'.$val.'</option'; 
    $count++; 
} 

, wenn Sie zwei Arrays in Ihrer Frage wie angegeben verwenden möchten dann-

$arr = ["arra1" => array("1" => "orange", "2" => "banana", "3" => "apple"), 
     "data-array" => array("first" , "second" , "third"),]; 

for($i=1 ; $i<=count($arr['arra1']);$i++) 
{ 
    echo '<option value='.$i.' data-value="'.$arr['data-array'][$i-1].'">'.$arr['arra1']["$i"].'</option>'; 
} 
2

Sie könnten diese vereinfach halten, indem Sie folgendermaßen vorgehen:

<?php 
foreach ($array as $index => $title) 
{ 
    echo "<option data-value='" . $data[$index] . "'>$title</option>"; 
} 
?> 
1

Dies kann hilfreich sein, um Ihre gewünschter Ausgang:

$arra1 = array("1" => "orange", "2" => "banana", "3" => "apple"); 
$data_array = array("first" , "second" , "third"); 

echo "<select>"; 
foreach ($arra1 as $key => $value) { 
    echo '<option value="'.($key).'" data-value="'.$data_array[$key-1].'">'.$value.'</option>'; 
} 
echo "</select>"; 
1

Lesen Sie über array_map. Sie können eine beliebige Anzahl von Arrays, um es liefern und durchqueren sie irgendwie parallel:

$options = array_map(function ($key, $value, $datum) { 
    return "<option value=\"$key\" data-value=\"$datum\">$value</option>"; 
}, array_keys($arry_1), $arry_1, $data_array); 

Hier ist working demo.

Achten Sie darauf, dass, um Schlüssel mit Werten übergeben zu können, ich array_keys Funktion verwendet habe.

Verwandte Themen