Avatar billede gigi1 Nybegynder
15. januar 2015 - 08:02 Der er 7 kommentarer

Unik sammensat array

Hvordan sammensætter jeg disse to arrays?



Courses


Array (
[0] => Array ( [Name] => Fag1 [CourseId] => 1 [Selected] => )
[1] => Array ( [Name] => Fag2 [CourseId] => 2 [Selected] => )
[2] => Array ( [Name] => Fag3 [CourseId] => 3 [Selected] => )
[3] => Array ( [Name] => Fag4 [CourseId] => 4 [Selected] => )
[4] => Array ( [Name] => Fag5 [CourseId] => 5 [Selected] => )
)


TeacherCourses


Array (
[0] => Array ( [CourseId] => 1 [Selected] => selected)
[1] => Array ( [CourseId] => 2 [Selected] => selected)
[2] => Array ( [CourseId] => 3 [Selected] => selected)
)


Resultatet skulle gerne blive

Array (
[0] => Array ( [Name] => Fag1 [CourseId] => 1 [Selected] => selected)
[1] => Array ( [Name] => Fag2 [CourseId] => 2 [Selected] => selected)
[2] => Array ( [Name] => Fag3 [CourseId] => 3 [Selected] => selected)
[3] => Array ( [Name] => Fag4 [CourseId] => 4 [Selected] => )
[4] => Array ( [Name] => Fag5 [CourseId] => 5 [Selected] => )
)
Avatar billede acore Ekspert
15. januar 2015 - 08:49 #1
Fx sådan her:

[quote]
foreach ($TeacherCourses as $TeacherCourseItem)
{
  foreach ($Courses as &$CourseItem)
  {
    if ($CourseItem['CourseId'] == $TeacherCourseItem['CourseId'])
    {
      $CourseItem['Selected'] = $TeacherCourseItem['Selected'];
      break;
    {
  }
}
[/quote]
Avatar billede acore Ekspert
15. januar 2015 - 08:50 #2
Øv - hvilken tag brugte du til koden?
Avatar billede gigi1 Nybegynder
15. januar 2015 - 08:54 #3
div tag

Jeg prøver lige med din kode.
Avatar billede gigi1 Nybegynder
15. januar 2015 - 09:04 #4
Jeg får følgende fejl:

Fatal error: Cannot create references to elements of a temporary array expression
Avatar billede acore Ekspert
15. januar 2015 - 11:07 #5
Hvilket php version kører du. Mener at muligheden for at ændre værdien af en foreach variabel blev indført med v5
Avatar billede acore Ekspert
15. januar 2015 - 11:42 #6
Har lige testet - denne her virker hos mig (har tilføjet unset - ikke strengt nødvendigt men mere korrekt):


$Courses = array(
  array('Name' => 'fag1', 'CourseId' => 1, 'Selected' => ''),
  array('Name' => 'fag2', 'CourseId' => 2, 'Selected' => ''),
  array('Name' => 'fag3', 'CourseId' => 3, 'Selected' => ''),
  array('Name' => 'fag4', 'CourseId' => 4, 'Selected' => ''),
  array('Name' => 'fag5', 'CourseId' => 5, 'Selected' => ''),
);

$TeacherCourses = array(
  array('CourseId' => 1, 'Selected' => 'Sel'),
  array('CourseId' => 2, 'Selected' => 'Sel'),
  array('CourseId' => 3, 'Selected' => 'Sel'),
);

html_dump($Courses); 
 
foreach ($TeacherCourses as $TeacherCourseItem)
{
  foreach ($Courses as &$CourseItem)
  {
    if ($CourseItem['CourseId'] == $TeacherCourseItem['CourseId'])
    {
      $CourseItem['Selected'] = $TeacherCourseItem['Selected'];
      break;
    }
  }
}

unset($TeacherCourseItem);
unset($CourseItem);

html_dump($Courses); 

function html_dump($var)
{
  echo("<pre>"); 
  var_dump($var); 
  echo("</pre><br />");

Avatar billede arne_v Ekspert
19. januar 2015 - 03:13 #7
Overvej at skifte data struktur. Associative array med CourseID som key ville goere den her slags meget nemmere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester