将值插入数组

时间:2013-05-01 14:05:50

标签: php arrays json

我在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的第一个数组? / p>

修改

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

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...
]);

3 个答案:

答案 0 :(得分:1)

我认为这就是你所需要的。首先必须使用$images开始使用干净的$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;

}

答案 1 :(得分:0)

在php端,对两个数组使用 array_merge()。另外,array_unique会变得很方便(它会删除重复项)。

答案 2 :(得分:0)

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

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

或类似的东西

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

$rows[$actualIndex]['image'.$imageID] = $images['url']
imageID++;