将PHP二维数组的第一个孩子从glob转移到Jquery

时间:2014-02-05 06:38:40

标签: php jquery arrays json

将我的头发拉了几个小时后,我已经接近但仍然无法得到它。

我有一个PHP脚本,它使用globforeach来编译嵌套数组:

$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的新手,需要一些第二意见。

感谢所有能给我一些指导的人!!

2 个答案:

答案 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(或阵列中出现的第一个)。

感谢所有有意见的人。