Übergabe Dateinummer der Audio im Link/Text an Arrey oder Variable für Wiedergabe der Audiodatei

Jan-Frederik Stieler

Monsterator
Moderator
Hi,
Du kannst jeden Bezeichner (Key) in einem Array nur einmal verwenden.
Jetzt fragst Du nach B ab und schreibst das in die Variable. Beim nächsten Durchgang wird diese Var aber bei B wieder überschrieben. Um Werte in einer Var zu Verbinden musst Du einen Punkt hinter das = schreiben (=.). Aber da du immer auf B als Bezeichner testest würde Dein Array unlesbar bei mehreren B Bezeichnern.
 
Zuletzt bearbeitet:

Sempervivum

Erfahrenes Mitglied
Jan Frederik ist mir zuvor gekommen. Ich hatte es etwas ausführlicher formuliert:
Hiermit
$ausgabe = array($zeichen => $gueltig);
weist Du ja bei jedem Schleifendurchlauf der Variablen $ausgabe ein Array zu. Das heißt, jedes Mal überschreibst Du das zuvor eingetragene Array wieder mit dem neuen. Du musst das so ändern:
$ausgabe[$zeichen] = $gueltig;
Aaaber: Mit diesem Code
if ( $zeichen === "B"){
prüfst Du ob $zeichen ein "B" ist, d. h. dieses
$ausgabe[$zeichen] = $gueltig;
würdest Du immer mit dem selben Schlüssel ausführen, so dass der alte Wert doch wieder überschrieben würde.
Leider geht aus deinem Code nicht hervor, was dieses $audionew ist und was Du damit vor hast, so dass ich nicht weiß, wie man das ändern muss, um das zuletzt genannte Problem zu umgehen.
 

romacasa

Grünschnabel
Ok, vertehe. Die Idee soll sein: Ich habe ein Inhaltsverzeichnis.

"Aber dies tut dies....
Auch so oft....
Busse ist nicht Buße
Casa ist Haus auf Italienisch
etc."
Da die Ausgabe an einem bestimmten Bereiche der Webseite Alphabetisch geschieht, stelle ich dies mir so vor: Hauptarray ist $ausgabe. in diesem array kommt das array 'A', welches all jenen Text des Verzeichnisses beinhaltet, die mit A beginnen. usw. Also 2 Ebenen.

Danach soll ich nur noch mit Ausgabe an dem Platz plaziert werden.

hier der ganze Code:
PHP:
<?php

// arrays und variablen def mit inhalt oder leer
    $ordner = 'audios';
    $ausgabe = array();
    
// Einlesen des Inhaltsverzeichnisses und sortieren

    $inhverz = file("inh.txt");
    sort($inhverz, SORT_NATURAL);
  
    
// Ordner auslesen und inhalt in Array speichern

    $audio = scandir($ordner);
    
// ordnerangaben (..) und (.), und .mp3 entfernen
    $audio = array_diff($audio, array('..', '.',));
    
    foreach ($audio as $naudio) {
        $audios = substr($naudio, 0, -4);
        $audionew[] = $audios;
    
    }
    
// Abgleich inh.txt mit Ordner und erstellung Inhaltsverzeichnis

        
    if (!empty($audio) && !empty($inhverz)) {

            foreach ($inhverz as $gueltig) {
                
                $zeichen = substr($gueltig,0 ,1); // erster Buchstabe ermitteln
                
                foreach ($audionew as $wert) {
                    
                    if (strpos($gueltig , $wert) && $zeichen === "A"){
                        
                        
                            $ausgabe = array($zeichen => $gueltig);
                            
                    }
                }
        
            }   
        
    }     else {
        echo "Die Audiodateien oder das Inhaltsverzeichnis scheinen nicht vorhanden zu sein!";
    }
var_dump($ausgabe);

// Vorbereitung Für HTML Ausgabe

    
// echo('<a href='player.php?file=" . urlencode($wert) . "'>" . basename($gueltig) . "</a><br/>"');
//                       
?>
Danke der Hilfe.
 
Zuletzt bearbeitet:

Sempervivum

Erfahrenes Mitglied
OK, ich denke, das verstehe ich jetzt, Du willst ein zweidimensionales Array aufbauen wo der Schlüssel des äußeren der Anfangsbuchstabe ist. Dann müsste es so funktionieren:
Code:
$ausgabe = array();   
.....
if (!empty($audio) && !empty($inhverz)) {

            foreach ($inhverz as $gueltig) {
                
                $zeichen = substr($gueltig,0 ,1); // erster Buchstabe heruaarbeiten

                // Erster Schlüssel ist das erste Zeichen.
                // Unter diesem Schlüssel gibt es jeweils ein weiteres
                // Array dem wir den Dateinamen hinzu fügen:
                $ausgabe[$zeichen][] = $gueltig;
                      
            }   
            
        print_r($ausgabe);
        
    }     else {
        echo "Die Audiodateien oder das Inhaltsverzeichnis scheinen nicht vorhanden zu sein!";
    }
var_dump ($ausgabe);