将我的头发拉了几个小时后,我已经接近但仍然无法得到它。
我有一个PHP脚本,它使用glob
和foreach
来编译嵌套数组:
$folderDir = '*/';
$folders = glob($folderDir, GLOB_ONLYDIR);
$imagesDir = 'images/';
$images = Array();
foreach($folders as $folder){
$images[] = glob($folder. $imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
}
echo json_encode($images);
我想从每个glob结果的子文件夹中获取第一个图像并将它们发送到jquery(以及随后的shtml文件):
$(window).load(function()
{
$.getJSON('populate.php', function(data)
{
$.each(data, function()
{
alert(data);
});
});
});
有一秒钟,我有了它,但是一旦我将Jquery更改为使用它,它会立即警告数组4次(这可能与每个文件夹中的图像数量有关?)。
我尝试了大约1,000种不同的变量,使用了1个foreach,然后是2个然后使用1.
我是PHP的新手,需要一些第二意见。
感谢所有能给我一些指导的人!!
答案 0 :(得分:0)
你有一些逻辑错误:
$folderDir = '*/';
$folders = glob($folderDir, GLOB_ONLYDIR);
$imagesDir = 'images/';
$images = Array();
// you redefine glob data from parent to images
// and after that redefine images to image
// it's unnecessary
foreach ($folders as $folder)
{
$images[] = glob($folder . $imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
}
echo json_encode($images);
和jQuery。对于调试,我重新使用console.log命令
$(window).load(function()
{
$.getJSON('populate.php', function(data)
{
// Debuging using console.log
console.log(data);
// Or if you not using console.log
$.each(data, function(key, val)
{
alert(key, val);
})
});
});
答案 1 :(得分:0)
这似乎可以解决问题。我很确定它在语法上并不完美,但它会输出正确的结果。 JSON现在读取它并且数组是正确的:
$folderDir = '*/';
$folders = glob($folderDir, GLOB_ONLYDIR);
$imagesDir = 'images/';
$image = array();
$finalArray = array();
foreach($folders as $folder){
$images = glob($folder. $imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$image = array($images);
$firstBorn = $image [0][0];
$finalArray[] = $firstBorn;
}
echo json_encode($finalArray);
?>
这给了我所有*/images/
文件夹中的所有1.jpg(或阵列中出现的第一个)。
感谢所有有意见的人。