0

我在 PHP 中从我的 sql 表中选择 *,并将其转换为 JSON,因此结果如下:

([
    {"id":"350","Name":"BlaBla","Info":"BlaBla"}, 
    {"id":"351","Name":"BlaBla","Info":"BlaBla"},
    {"id":"352","Name":"BlaBla","Info":"BlaBla"}
]);

我根据上面记录中的 id 为客户网站抓取图像(这是客户的请求),并将图像输出到类似的数组/字典中并输出到 JSON:

([
    {"image1":"http://Sourceofimg.jpg"},
    {"image2":"http://Sourceofimg.jpg"},
    {"image3":"http://Sourceofimg.jpg"},
    {"image4":"http://Sourceofimg.jpg"},
    {"image5":"http://Sourceofimg.jpg"}
]);

所以假设我刮了一个页面,page.php?id=350我会得到与上面的图像数组类似的输出,我怎样才能将该结果附加/添加到第一个数组中id=350

编辑

这是我想组合数组的地方:

while ($row = mysql_fetch_assoc($results)) 
                    { 
    $rows[] = $row;
    $url = 'http://www.url.com/page.php?id='.$row['id'].'';
    $html = file_get_html($url);
    foreach($html->find('div.classvalue') as $element){
    foreach($element->find('img') as $img){

      $images[] = array("image".$i."" => $img->src);
      $i = $i + 1;
      $rows = array_merge($rows, $images);

} } }

我的版本显然不起作用,它似乎将新图像附加到已经存在的图像 [] 因此 $rows[] 的最后一个元素将获得完整的图像列表,我只希望图像与该 ID 相关联。同样通过合并,它没有正确合并我得到这样的输出,例如:

([
    {"id":"350","Name":"BlaBla","Info":"BlaBla"},
    {"image1":"http://Sourceofimg.jpg"},
    {"image2":"http://Sourceofimg.jpg"}, 
    {"id":"351","Name":"BlaBla","Info":"BlaBla"}
]);

我喜欢它:

([
    {"id":"350","Name":"BlaBla","Info":"BlaBla", "image1":"http://Sourceofimg.jpg", "image2":"http://Sourceofimg.jpg"} etc...
]);
4

3 回答 3

1

我认为这就是你所需要的。您首先必须从一个干净的$images数组 using开始,$images = array();这样您的数组中就不会有先前循环的结果。然后你应该收集$images数组内的图像(使用forloops)。然后,您可以使用 . 将图像存储在键下的数组$row中。'images'$row['images'] = $images;

希望这是你需要的。

while ($row = mysql_fetch_assoc($results)) { 

    $url = 'http://www.url.com/page.php?id='.$row['id'].'';
    $html = file_get_html($url);
    $images = array();
    $i = 0;

    foreach($html->find('div.classvalue') as $element){

        foreach($element->find('img') as $img){
            $row["image".$i] = $img->src;    
            $i = $i + 1;    
        }

    }

    $rows[] = $row;

}
于 2013-05-01T14:55:46.470 回答
0

您必须添加$images到实际行。您正在做的是调整数组大小。

$actualIndex = count($rows);
$rows[] = $row;
...
...
$rows[$actualIndex] = $images; 

或类似的东西

您可以调整$rows[$actualIndex]以满足您的结构。首先设置某处$imageID = 1

$rows[$actualIndex]['image'.$imageID] = $images['url']
imageID++;
于 2013-05-01T14:48:41.570 回答
0

在 php 端使用array_merge()和两个数组。此外 array_unique 将变得很方便(它将删除重复项)。

于 2013-05-01T14:10:54.287 回答