json_encode($myVar);正在给出地图,我想要一个字符串数组


json_encode($myVar); is giving map, I want a string array

我有以下HTML片段,使用PHP和JavaScript:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>
var imageIndex = 0;       // index into imageNames array
var imageHeight = 400;    // height of image; changed by user clicking size buttons
var imageNames;            // names of images user can view in this album
function pageLoaded()   // execute this when the page loads.
{
  // PHP -- generate the array of image file names
  <?php
    function getImageNames($directory)
    {
      $handle = opendir($directory);   // looking in the given directory
      $file = readdir($handle);       // get a handle on dir,
      while ($file !== false)         // then get names of files in dir
      {
        $files[] = $file;
        $file = readdir($handle);
      } 
      if ($files[0] === ".")  { unset($files[0]); } // Unix specific?
      if ($files[1] === "..") { unset($files[1]); } 
      foreach($files as $index => $file)  // only keep files with image extensions
      { $pieces = explode(".", $file);
        $extension = strtolower(end($pieces));
        if ($extension !== "jpg") { unset($files[$index]); }
      }
      $files = array_values($files);  // reset array
      natcasesort($files);            // and sort it.
      return $files;
    }
  ?>
  <?php $imageDirectory = $_GET['directory'] . '/';
        $imageNames = getImageNames($imageDirectory); 
  ?>     
  imageNames = <?php echo json_encode($imageNames); ?>; 
  imageHeight = 400;
  imageIndex = 0;
  reloadImage();        // loads the first image based on height and index
}

在此之后还有更多内容,但这部分没有引用那里的任何内容,并且我的问题此时已经存在于 HTML 输出中。

问题是,从末尾开始 5 行,我对文件名数组进行了json_encode。 我从中得到的输出如下所示:

      imageNames = [{"59":"01-hornAndMusic.JPG","58":"02-DSC_0009.JPG","57":"03-DSC_0010.JPG","56":"04-Discussion.JPG","55":"05-DSC_0015.JPG","54":"06-DSC_0016.JPG","53":"07-DSC_0019.JPG","52":"08-strings.JPG","51":"09-strings2.JPG","50":"10-rehearsing.JPG","49":"11-StringsBigger2-001.JPG","48":"12-DSC_0041.JPG","47":"13-DSC_0046.JPG","46":"14-ensemble.JPG","45":"15-ensemble2.JPG","44":"16-DSC_0052.JPG","43":"17-rehearsing3.JPG","42":"18-rehearsing4.JPG","41":"19-rehearsing-001.JPG","40":"20-stringsBigger2.JPG","39":"21-rehearsing-002.JPG","38":"22-rehearsing-003.JPG","37":"23-ensemble3.JPG","36":"24-winds.JPG","35":"25-rehearsing-004.JPG","34":"26-stringsEvenBigger.JPG","33":"27-concentration.JPG","32":"28-concertMistress2.JPG","31":"29-stringsMore.JPG","30":"30-stringsMore-001.JPG","29":"31-stringsMore-002.JPG","28":"32-stringsMore-003.JPG","27":"33-stringsMore-004.JPG","26":"34-stringsMore-005.JPG","25":"35-DSC_0076.JPG","24":"36-stringsMore-007.JPG","23":"37-stringsMore-008.JPG","22":"38-stringsMore-009.JPG","21":"39-oboes.JPG","20":"40-winds-001.JPG","19":"41-DSC_0085.JPG","18":"42-DSC_0086.JPG","17":"43-percussion.JPG","16":"44-DSC_0088.JPG","15":"45-violinAtRest.JPG","14":"46-laughterInTheWoodwinds.JPG","13":"47-conducting-001.JPG","12":"48-DSC_0095.JPG","11":"49-DSC_0096.JPG","10":"50-AllTogetherNow.JPG","9":"51-DSC_0106.JPG","8":"52-horns.JPG","7":"53-DSC_0111.JPG","6":"54-conducting.JPG","5":"55-conducting-002.JPG","4":"56-conducting-003.JPG","3":"57-conducting-005.JPG","2":"58-DSC_0120.JPG","1":"59-DSC_0122.JPG","0":"60-everybody.JPG"}]; 

所以我有这个混合PHP映射/数组的东西的键和值。 我想要的只是值,放入JavaScript中的字符串数组中。

我有时会让它起作用,但不是其他的,我不知道其中的区别。

我认为在编码之前array_values $imageNames上应用函数应该可以解决问题。

imageNames = <?php echo json_encode(array_values($imageNames)); ?>;

我会这样做:

imageNames = <?php echo json_encode(array_values($imageNames)); ?>;