2015-02-24 55 views
0

我有以下的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地图/阵列的thingie值。我想要的只是值,放入JavaScript中的字符串数组中。

我已经使这个工作有时,但不是其他人,我不知道其中的差异。

+2

'json_encode()'要求** 0 **开始的阵列,否则将其转换为一个关联数组(即 “地图”)。 – 2015-02-24 19:15:45

+0

@AlejandroIván你的意思是一个数组的第一个元素在索引0? – arcy 2015-02-24 19:28:54

+0

是的,每个项目必须位于连续的索引(0,1,2,3,...)中。例如,如果存在这些索引:0,1,2,4 ...(缺少3),它将被编码为键值。 – 2015-02-24 23:09:26

回答

3

我觉得编码它们应该做的伎俩之前$imageNames应用array_values功能。

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

1

我应该这样做:

imageNames = <?php echo json_encode(array_values($imageNames)); ?>; 
相关问题