2016-07-31 13 views
0

Ich versuche, meine Dateien zu scannen und bestellen sie auf ".php" und ".html". (Ich möchte, dass sie zuerst erscheinen)Wie kann ich einen Schlüssel ohne einen Wert in einem Objekt hinzufügen PHP

if(isset($_POST["requestFileNames"])){ 
    $path = '../'; 
    $files = []; 
    $pages = []; 
    $handle = @opendir('./' . $path . '/'); 

    while ($file = @readdir($handle)){ 
     if("." !== $file && ".." !== $file){ 
     if (strpos($file, '.php') !== false || strpos($file, '.html') !== false){ 
      if(!is_dir($path.$file)){ 
      array_push($pages, $file); 
      } 
     } else { 
      if(!is_dir($path.$file)){ 
      array_push($files, $file); 
      } 
     } 
     } 
    } 
    @closedir($handle); 
    sort($files); 
    unset($handle,$ext,$file,$path); 

    echo json_encode($pages); 
    } 

Diese Ausgänge: [ "hello.php", "index.php"];

$ Dateien enthält: ["something.txt", "test.txt"];

Ich möchte die Ausgabe sein: ["hello.php", "index.php", "something.txt", "test.txt"];

Wie kann dies erreicht werden?

+0

viel einfacher 'glob() zu verwenden,' dann sortieren das Array –

Antwort

1

können Sie kombinieren die beiden Arrays mit array_merge:

$combined = array_merge($pages, $files); 
echo json_encode($combined); 

Beispiel von kombinierten Arrays: https://3v4l.org/0vE0F

+0

Dies erzeugt nicht den Ausgang I Willst du, wie du in meiner Frage sehen kannst. –

+0

Es wird '[" hello.php "," index.php "," something.txt "," test.txt "]] ausgeben, was genau das zu sein scheint, was Sie tun? In der Beispielverknüpfung verwende ich var_dump, damit Sie sehen können, wie das Array strukturiert ist. In dem Beispiel, das ich oben angegeben habe, verwendet es json_encode, um es stattdessen in das erforderliche Format zu bringen. – rjdown

+1

In Ordnung, ich habe nicht genug Aufmerksamkeit geschenkt, es tut mir leid. Das ist die Antwort, nach der ich gesucht habe. Vielen Dank! –

Verwandte Themen