Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查询/搜索3个JSON文件,将项目连接起来,就像SQL数据库连接一样 问题:_Javascript_Php_Json_Search - Fatal编程技术网

Javascript 查询/搜索3个JSON文件,将项目连接起来,就像SQL数据库连接一样 问题:

Javascript 查询/搜索3个JSON文件,将项目连接起来,就像SQL数据库连接一样 问题:,javascript,php,json,search,Javascript,Php,Json,Search,假设我有3个JSON文件 有没有一种方法可以从3个JSON文件中获取数据,其中前2个JSON数据集包含List对象数组和Tag对象数组,第3个JSON数据集包含一个对象数组,该对象数组具有List.id和Tag.id以将标记连接到列表,就像使用3个关系数据库一样SQL中的数据库表 示例搜索 因此,例如,如果我需要获取属于List.id1的所有Tags,我会在JSON文件/datasetList\u Tags.JSON中查找属性为List\u id==1的记录,所有匹配对象都会返回tag\u id

假设我有3个JSON文件

有没有一种方法可以从3个JSON文件中获取数据,其中前2个JSON数据集包含
List
对象数组和
Tag
对象数组,第3个JSON数据集包含一个对象数组,该对象数组具有
List.id
Tag.id
以将标记连接到列表,就像使用3个关系数据库一样SQL中的数据库表

示例搜索
因此,例如,如果我需要获取属于
List.id
1的所有
Tags
,我会在JSON文件/dataset
List\u Tags.JSON
中查找属性为
List\u id==1
的记录,所有匹配对象都会返回
tag\u id
,并使用它来查找
Tags.JSON
文件/dataset从
列表\u tags.json
结果中,搜索具有与id匹配的
tag.id
属性的所有标记

我可以使用JavaScript或PHP

我认为它可能如何工作:
  • 搜索
    List_Tags.json
    数据以查找所有
    List_id
    ==1的记录`
  • 将这些记录(如果有)保存到数组变量
  • 现在,通过迭代每个数组对象来搜索
    Tags.json
    file/dataset,从\u当前\u数组\u迭代\u循环中搜索
    tag.id==id\u的项
  • 将与上一步匹配的每个标记项添加到新数组中
  • 完成后,返回新数组,该数组包含属于列表ID==1的列表的所有标记
下面是JSON文件数据和示例数据


JSON文件对象属性
  • 文件1=
    列出。json
    具有
    • 身份证
    • 名字
    • 描述
  • 文件2=
    标记。json
    具有以下对象数组:
    • 身份证
    • 名字
    • 描述
  • 文件3=
    列表\u标记。json
    具有一个对象数组,用于将标记连接到具有以下内容的列表:
    • 列表id
    • 标签号

JSON文件数据示例:

我用PHP解决了它,现在我也想用JavaScript解决它

<?php

$list_json = '[{"id":1,"name":"List 1 Name","description":"List 1 Description"},{"id":2,"name":"List 2 Name","description":"List 2 Description"}]';

$list_array = json_decode($list_json);

echo '<pre>';
print_r($list_array);
echo '<hr>';

/////////////////////
///

// search tags_array for id == $id.  Array can be multi-dimensional array or array of objects
function searchForTagId($id, $tags_array) {
    foreach ($tags_array as $tag) {
        if ($tag->id == $id) {
            return $tag;
        }
    }
    return null;
}



$tags_json = '[{"id":1,"name":"Tag 1 Name","description":"Tag 1 Description"},{"id":2,"name":"Tag 2 Name","description":"Tag 2 Description"},{"id":3,"name":"Tag 3 Name","description":"Tag 3 Description"}]';

$tags_array = json_decode($tags_json);

echo '<pre>';
print_r($tags_array);
echo '<hr>';

/////////////////////


$list_tags_json = '[{"list_id":1,"tag_id":1},{"list_id":1,"tag_id":2},{"list_id":2,"tag_id":2}]';

$list_tags_array = json_decode($list_tags_json);

echo '<pre>';
print_r($list_tags_array);
echo '<hr>';

//////////////////////


$list_1_tags = array();
foreach ($list_tags_array as $list_tag) {
    if ($list_tag->list_id == 2) {
        $list_1_tags[] = searchForTagId($list_tag->tag_id, $tags_array);
    }
}

echo '<pre>';
print_r($list_1_tags);

你在等什么问题?@splash58问题/问题在我帖子的底部…问是否有一种方法可以从3个JSON数据集获取数据,就像从3个关系数据库获取数据一样,其中第3个表是连接数据集1和2的连接器/联接表,我理解。让我们等待大师:)@splash58我更新了我的问题,让它更清楚hopefuilly@splash58我看你对PHP数组真的很在行。如果我所有的JSON数据都转换成多维数组,你认为我关于如何搜索每个数组的最新问题的理论在PHP中会起作用吗。谢谢你的帮助
<?php

$list_json = '[{"id":1,"name":"List 1 Name","description":"List 1 Description"},{"id":2,"name":"List 2 Name","description":"List 2 Description"}]';

$list_array = json_decode($list_json);

echo '<pre>';
print_r($list_array);
echo '<hr>';

/////////////////////
///

// search tags_array for id == $id.  Array can be multi-dimensional array or array of objects
function searchForTagId($id, $tags_array) {
    foreach ($tags_array as $tag) {
        if ($tag->id == $id) {
            return $tag;
        }
    }
    return null;
}



$tags_json = '[{"id":1,"name":"Tag 1 Name","description":"Tag 1 Description"},{"id":2,"name":"Tag 2 Name","description":"Tag 2 Description"},{"id":3,"name":"Tag 3 Name","description":"Tag 3 Description"}]';

$tags_array = json_decode($tags_json);

echo '<pre>';
print_r($tags_array);
echo '<hr>';

/////////////////////


$list_tags_json = '[{"list_id":1,"tag_id":1},{"list_id":1,"tag_id":2},{"list_id":2,"tag_id":2}]';

$list_tags_array = json_decode($list_tags_json);

echo '<pre>';
print_r($list_tags_array);
echo '<hr>';

//////////////////////


$list_1_tags = array();
foreach ($list_tags_array as $list_tag) {
    if ($list_tag->list_id == 2) {
        $list_1_tags[] = searchForTagId($list_tag->tag_id, $tags_array);
    }
}

echo '<pre>';
print_r($list_1_tags);