Php 向数组中插入值

Php 向数组中插入值,php,arrays,json,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:

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

在php端,对两个数组使用array\u merge()。此外,数组_unique将变得非常方便(它将删除重复项)。

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

$actualIndex = count($rows);
$rows[] = $row;
...
...
$rows[$actualIndex] = $images; 
或者类似的事情

您可以调整
$rows[$actualIndex]
以满足您的结构。 第一个设置在某处
$imageID=1

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

我想这就是你需要的。首先必须使用
$images=array()从一个干净的
$images
数组开始
这样您就不会得到数组中以前循环的结果。然后,您应该收集
$images
数组中的图像(使用forloops)。然后可以使用
$row['images']=$images将图像存储在
$row
数组中的
'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;

}

这将两者合并,我想将图像数组的结果添加到第一个数组中的特定行中,但不要将其添加到json字符串中。对创建json时使用的任何结构进行转换-例如,在完成之前不要转换为json。在结束之前一直使用原生php数组/对象。这就是我要做的,转换为JSON是我文件的最后一行。我正在尝试在while($row=mysql\u fetch\u assoc($results)){}中执行此操作$行[]是我的表数据$images[]是我的图像(很明显),当我手动传递查询时,这没有问题,但在这个循环中它不正确第一个for循环的结束
}
在哪里?}=没有问题,我只是没有复制并粘贴到这里,但我现在就这样做。@MikeJ实际上有两个结束
丢失了。请检查您的代码,因为您确实需要在打开for循环后关闭它…尝试了此操作,但没有完全完成,我得到的结果是:
({“0”:{“id”:350,“Name”:“BlaBla”,“Info”:“blablabla”},“17”:[{“image1”:”http://Sourceofimg.jpg"}]});它现在真的越来越近了,需要再修复一次。我现在得到的结果是:
([{“id”:350”,“Name”:“BlaBla”,“Info”:“BlaBla”,“images”:{[{“image1”:“imgsource”}]})
是否可以将图像存储在记录字典中?我更改了代码。请注意,我现在还添加了
$I=0;
,否则图像计数器不会为每行重置。您是天才!:)谢谢您的帮助