Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
将php循环数据附加到JSON对象_Php_Json_Loops_Append - Fatal编程技术网

将php循环数据附加到JSON对象

将php循环数据附加到JSON对象,php,json,loops,append,Php,Json,Loops,Append,我需要一个html模板中的循环php数据,这样我知道它与JSON有关,但不是JSON专家,在搜索web时找不到太多帮助 $uniqueFranchise_id = array_unique($franchise_id); $dataArr = '[ { "name": "Dylan", "page_link": "https://mypage.com/" } ]'; foreach($uniqueFranchise_id as $franch

我需要一个html模板中的循环php数据,这样我知道它与JSON有关,但不是JSON专家,在搜索web时找不到太多帮助

$uniqueFranchise_id = array_unique($franchise_id);
$dataArr = '[
    {
        "name": "Dylan",
        "page_link": "https://mypage.com/"
    }
   ]';
foreach($uniqueFranchise_id as $franchise)
{
    $sqlFranchise = "select * from franchise where franchise_id = $franchise";
    $resultFranchise = $conn->query($sqlFranchise);
    if($resultFranchise->num_rows > 0)
    {
        while($rowFranchise = $resultFranchise->fetch_assoc())
        {
           $dataArr = json_decode($data, TRUE);
           $dataArr[] = "['name'=>'".$rowFranchise['name']."', 'page_link'=>'".$rowFranchise['page_link']."']";
           //$json = json_encode($dataArr);
        }
    }
}

$json = json_encode($dataArr);
print_r($dataArr);

但它只附加了一行。事实上,它删除了已经在我的dataArr中的数据,只从我的循环中添加了一行?也许我完全错误地处理了这种情况?

您在while循环中设置了$dataArr。因此,每次循环运行时,它都会被覆盖。此外,当您将其作为数组(或对象)处理并随后将其转换为JSON时,它更有意义,也更清晰

$dataArr = array(array('name' => 'Dylan', 'page_link' => 'https://mypage.com/'));

foreach($uniqueFranchise_id as $franchise)
{
    $sqlFranchise = "select * from franchise where franchise_id = $franchise";
    $resultFranchise = $conn->query($sqlFranchise);
    if($resultFranchise->num_rows > 0)
    {
        while($rowFranchise = $resultFranchise->fetch_assoc())
        {
           $dataArr[] = array('name' => $rowFranchise['name'], 'page_link' => $rowFranchise['page_link']);
        }
    }
}

$json = json_encode($dataArr);
echo $json;

在while循环中设置$dataArr。因此,每次循环运行时,它都会被覆盖。此外,当您将其作为数组(或对象)处理并随后将其转换为JSON时,它更有意义,也更清晰

$dataArr = array(array('name' => 'Dylan', 'page_link' => 'https://mypage.com/'));

foreach($uniqueFranchise_id as $franchise)
{
    $sqlFranchise = "select * from franchise where franchise_id = $franchise";
    $resultFranchise = $conn->query($sqlFranchise);
    if($resultFranchise->num_rows > 0)
    {
        while($rowFranchise = $resultFranchise->fetch_assoc())
        {
           $dataArr[] = array('name' => $rowFranchise['name'], 'page_link' => $rowFranchise['page_link']);
        }
    }
}

$json = json_encode($dataArr);
echo $json;

您不应该自己构建字符串,您应该构建数据,然后对结果进行JSON编码(代码中的注释)


如果不信任此数据来停止SQL注入,您还应该查看准备好的语句。

您不应该自己构建字符串,您应该构建数据,然后对结果进行JSON编码(代码中的注释)



如果不信任此数据来停止SQL注入,您还应该查看准备好的语句。

您的第一个$dataArr不是数组,它只是一个具有数组表示形式的字符串。在while循环中,添加$dataArr.=json_decode($data,TRUE);这会将它附加到原始的$dataArrOk中,所以我需要将第一个数组设置为关联数组?实际上,我甚至不认为需要在while循环中进行json_解码。既然$dataArr已经是一个字符串了,而且json_decode从字符串转换而来,我猜$data已经是一个字符串了,只需将$data附加到$dataArr中,看看会得到什么。您的第一个$dataArr不是一个数组,它只是一个具有数组表示形式的字符串。在while循环中,添加$dataArr.=json_decode($data,TRUE);这会将它附加到原始的$dataArrOk中,所以我需要将第一个数组设置为关联数组?实际上,我甚至不认为需要在while循环中进行json_解码。既然$dataArr已经是一个字符串了,而且json_decode从字符串转换而来,我猜$data已经是一个字符串了,只需将$data附加到$dataArr,看看它能给你带来什么。这很有效!非常感谢。不过有一个问题。我只是重新体验一下。我正在打印$dataArr而不是$json。我刚刚意识到这可能是个错误,但当我像这样运行它时,它工作得非常好。$json变量的意义是什么?我没有注意到这一点。我刚刚更新了代码以便显示json输出。你知道为什么结果是这样的吗:{“name”:“Dylan”,“page\u link”:“https:\/\/mypage.com\/”}为什么页面链接中有反斜杠?这是一种转义某些字符以避免破坏json结构的方法。别担心,当运行json_decode()时,那些转义字符将消失。明白了。谢谢这成功了!非常感谢。不过有一个问题。我只是重新体验一下。我正在打印$dataArr而不是$json。我刚刚意识到这可能是个错误,但当我像这样运行它时,它工作得非常好。$json变量的意义是什么?我没有注意到这一点。我刚刚更新了代码以便显示json输出。你知道为什么结果是这样的吗:{“name”:“Dylan”,“page\u link”:“https:\/\/mypage.com\/”}为什么页面链接中有反斜杠?这是一种转义某些字符以避免破坏json结构的方法。别担心,当运行json_decode()时,那些转义字符将消失。明白了。谢谢谢谢,我刚刚给了别人答案,不过我会调查的。是的,我知道准备好的声明。在这里不这样做是因为它对用户隐藏了所有数据。只有当用户在文本字段中输入数据时,才应该使用prepared,对吗?即使表单上的隐藏字段也可以更改-不要相信任何人。有些人会建议总是使用事先准备好的陈述,因为这会让你养成这样做的习惯,但我认为你必须做出明智的决定,什么时候应该使用它们。谢谢,我只是把答案告诉了其他人,但我会调查这一点。是的,我知道准备好的声明。在这里不这样做是因为它对用户隐藏了所有数据。只有当用户在文本字段中输入数据时,才应该使用prepared,对吗?即使表单上的隐藏字段也可以更改-不要相信任何人。有些人会建议总是使用事先准备好的陈述,因为这会让你养成这样做的习惯,但我认为你必须做出明智的决定,什么时候应该使用它们。