title: php array_merge
body: <p>I am getting an error on this line:</p>
  
  <pre><code>$ret=array_merge($ret,preg_ls($path."/".$e,$rec,$pat));
  </code></pre>
  
  <p>Error is: array_merge() Argument #2 is not an array </p>
  
  <p>I dont know know to solve this.</p>
  
  <p>Thank you.</p>
  
  <pre><code>function preg_ls($path=".", $rec=false, $pat="/.*/") {
      // it's going to be used repeatedly, ensure we compile it for speed.
      $pat=preg_replace("|(/.*/[^S]*)|s", "\\1S", $pat);
      //echo($pat);
      //Remove trailing slashes from path
      while (substr($path,-1,1)=="/") $path=substr($path,0,-1);
      //also, make sure that $path is a directory and repair any screwups
      if (!is_dir($path)) $path=dirname($path);
      //assert either truth or falsehoold of $rec, allow no scalars to mean truth
      if ($rec!==true) $rec=false;
      //get a directory handle
      $d=dir($path);
      //initialise the output array
      $ret=Array();
      //loop, reading until there's no more to read
      while (false!==($e=$d-&gt;read())) {
          //Ignore parent- and self-links
          if (($e==".")||($e=="..")) continue;
          //If we're working recursively and it's a directory, grab and merge
          if ($rec &amp;&amp; is_dir($path."/".$e)) {
              $ret=array_merge($ret,preg_ls($path."/".$e,$rec,$pat));
              continue;
          }
          //If it don't match, exclude it
          if (!preg_match($pat,$e)) continue;
          //In all other cases, add it to the output array
          //echo($path."/".$e."&lt;br/&gt;");
          $ret[]=$path."/".$e;
      }
      //finally, return the array
      echo json_encode($ret);
  }
  </code></pre>