2016-11-30 6 views
0

Ich habe eine Reihe von Jobs:Ausgabe einer Mehrfachauswahl mit ausgewählten Werten aus einem Array?

$jobs = ['j1', 'j2', 'j3', 'j4', 'j5']; 

ich auch eine Reihe von Benutzeraufträge haben:

$userJobs = ['j1', 'j3']; 

Ich bin ein Multi select aller Aufträge ausgibt und ich wünsche Benutzer Jobs haben ausgewählt.

Wenn ein Benutzer nur einen Job hatte ich so etwas tun würde:

foreach($jobs as $job){ 
    echo '<option '.$job == $userJob ? 'selected' : ''.'>'.$job.'</option>'; 
} 

Aber wie diese zu vergleichen Array zu nähern, ohne viel Schleifen?

+1

'in_arra y() 'oder wahrscheinlich etwas mit' array_intersect() ' – Rizier123

+0

' in_array ($ job, $ userJob) '? – cske

Antwort

2

Gerade drehen Sie die $userJobs Array

$userJobs = array_flip(['j1', 'j3']); 

dann können Sie mit einem einfachen isset($userJobs[$job]) überprüfen:

foreach($jobs as $job){ 
    echo '<option '.(isset($userJobs[$job]) ? 'selected' : '').'>'.$job.'</option>'; 
} 
1

Es ist nur eine Frage der Suche nach einem Wert (der Job) in einem Array (die Benutzeraufträge).

echo '<option '.(!in_array($job, $userJobs) ? null : 'selected').'>'.$job.'</option>'; 
1

Bitte verwenden in_array - Prüft, ob ein Wert in einem Array existiert

echo '<option '.(in_array($job, $userJobs) ? 'selected' : ''.'>'.$job.'</option>'; 
Verwandte Themen