Variabel från foreach

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Biasse



Medlem i: 5525 dagar

Status: Offline



#742102
Inlägg Skrivet: 2018-02-07 13:04      Ämne: Variabel från foreach Citera

Jag läser en m3u fil och får ut informationen. Sen finns div kanaler i en array ($lista). Hur gör man för att matcha kanalnamn från $lista med $ch och hämta url ($url) till varje kanal i $lista?

KOD:
1:
 
2:
$matches = "Läser m3u fil";
3:
$ch = "";
4:
$url = "";
5:
foreach($matches as $match)
6:
{         
7:
  $ch .= $match[2]; // Kanaler
8:
  $url .= $match[3]; // Urler
9:
}
10:
 
11:
$lista = array("SVT 1HD", "SVT 2HD", "Svt 24/B HD", "TV3 Sweden HD", "TV4 Sweden HD", "Kanal5 Sweden HD");
12:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4505 dagar
Från: Tavesta
Status: Offline



#742103
Inlägg Skrivet: 2018-02-07 21:19      Ämne: Citera

Börja med att skapa en array med url:er till varje kanal, där kanal är nyckel och url är värde:
PHP:
1:
 $matches "Läser m3u fil"
2:
$urler = array();
3:
foreach($matches as $match)
4:
{         
5:
  $urler[$match[2]] = $match[3]; 
6:
}  


Sedan kan du t.ex loopa igenom din $lista och mycket enkelt slå upp vilken url varje kanal har:

PHP:
1:
 $lista = array("SVT 1HD""SVT 2HD""Svt 24/B HD""TV3 Sweden HD""TV4 Sweden HD""Kanal5 Sweden HD");
2:
foreach($lista as $kanal) {
3:
  echo 'Kanalen '$kanal' har url ',  $urler[$kanal], "\n";
4:


Om någon kanal skulle saknas i $urler så kommer du få ett felmeddelande med undefined index. För att hantera den saken så kan du använda isset():
PHP:
1:
 foreach($lista as $kanal) {
2:
  if(isset($urler[$kanal])) echo 'Kanalen '$kanal' har url ',  $urler[$kanal], "\n";
3:
  else echo 'Kanalen '$kanal" saknar url\n";
4:
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Biasse



Medlem i: 5525 dagar

Status: Offline



#742115
Inlägg Skrivet: 2018-02-19 19:04      Ämne: re: Citera

Hej igen. Jag får inte till detta. Listan som kommer in som array ser ut enligt förjande

KOD:
1:
 
2:
array(6) { [0]=> string(9) "SVT 1HD " [1]=> string(9) "SVT 2HD " [2]=> string(15) "TV3 Sweden HD " [3]=> string(15) "TV4 Sweden HD " [4]=> string(18) "Kanal5 Sweden HD " [5]=> string(15) "TV6 Sweden HD " }
3:
 


Kanalerna stämmer med m3u listan och fungerar alldelles utmärkt att hämta med $match[2]. Sen ser det ut enligt din kod.

KOD:
1:
 
2:
$urler = array();
3:
foreach($matches as $match)
4:
{         
5:
  $urler[$match[2]] = $match[3];
6:
}
7:
 
8:
foreach($result as $kanal)
9:
{
10:
  echo 'Kanalen ', $kanal, ' har url ',  $urler[$kanal], "\n";
11:
}
12:
 


Då får jag fel: Kanalen SVT 1HD har url
Notice: Undefined index: SVT 1HD in C:\xampp\htdocs\m3u\favolist.php on line 104 på varje kanal. Allt verkar stämma men ändå galet? Smile
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4505 dagar
Från: Tavesta
Status: Offline



#742116
Inlägget är accepterad som det rätta svaret Skrivet: 2018-02-19 23:47      Ämne: Citera

Om du tittar efter noga så ser du att det finns spacetecken efter varje TV-kanalnamn i listan. Jag antar att dessa inte finns i m3u-filen.

Du kan rensa bort sådant från listan med trim() och array_map():
PHP:
1:
 $lista array_map('trim'$lista); 
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Biasse



Medlem i: 5525 dagar

Status: Offline



#742119
Inlägg Skrivet: 2018-02-20 16:39      Ämne: re: Citera

Ja och det var fel i båda såg jag. Jag måste bli bättre på att upptäcka dessa skillnder. Fungerande kod blev följande. Tack så hemskt mycket Cool

KOD:
1:
 
2:
$urler = array();
3:
foreach($matches as $match)
4:
{         
5:
  $ch = rtrim($match[2]);
6:
  $urler[$ch] = $match[3];
7:
}
8:
 
9:
foreach($result as $kanal)
10:
{
11:
  $kanal = rtrim($kanal);
12:
  echo $urler[$kanal];
13:
}
14:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic