你好 我想从PHP传递几个数组到javascript。对于其中的一些而言,它适用,对其他则不适用。我得到一组文件名和一个包含几个文本文件内容的数组。从PHP传递数组到javascript
<?php
$album="./images/text_".$benutzerLang."_album1/";
$fileArray=lsRandom("./images/album1");
$listTextArray=initTexts($album,$fileArray);
$falseArray=lsRandom("./images/album2");
print $listTextArray[0];
?>
<script language="javascript" type="text/javascript">
var filesArray=new Array(5);
var falseArray=new Array(5);
var textListArray=new Array(5);
<?php
$i=0;
foreach($fileArray as $element){
print 'filesArray['.$i.']="'.$element.'";';
$i++;
}
$i=0;
foreach($falseArray as $element){
print 'falseArray['.$i.']="'.$element.'";';
$i++;
}
$i=0;
foreach($listTextArray as $element){
print 'textListArray['.$i.']="'.$element.'";';
$i++;
}
?>
function createText(){//...
</script>
<?php
function lsRandom($foldername){
$files = array();
$returnFiles=array();
$indexes=array();
$currentPath=getcwd();
chdir($foldername);
// Get the all files and folders in the given directory.
$files = glob("*", GLOB_BRACE + GLOB_MARK);
$indexes=(array_rand($files,5));
shuffle($indexes);
foreach($indexes as $in){
$returnFiles[$in]=$files[$in];
}
chdir($currentPath);
return $returnFiles;
}
function getFileText($fileName,$path){
$filePath=''.$path.''.$fileName.'';
//$file=fopen($filePath,'r');
//$text=fread($file,filesize($filePath));
$text=file_get_contents($filePath,false);
return $text;
}
function initTexts($album, $images){
$textArray1=array();
$i=0;
foreach($images as $im){
$nameArray=explode(".",$im);
$textName=''.$nameArray[0].'.txt';
$textArray1[$i]=getFileText($textName, $album);
$i++;
}
return $textArray1;
}
?>
问题是$ listTextArray。在第8行中,我可以打印整个数组$ listTextArray,其中包含一些小文本文件的内容,它可以工作。但在'foreach - loop'中进一步下降。它不再工作了。只要我在第二个php块中使用变量$ listTextArray,我的其他代码就不会再执行了。我不知道为什么它不能访问该部分的$ listTextArray。因为它对其他数组$ fileArray和$ falseArray没有问题。
没有不匹配 - 在PHP中使用JS和'$ listTextArray'中的'textListArray'。不过,使它们在不同语言中相同可能有助于减少混淆。 :-) – 2011-05-10 23:12:18
感谢您的回答 – kapukinz 2011-05-11 12:46:41