Php 正确编码Json?
好吧,我现在重做我的问题,这样人们就能理解我想做什么 Search.phpPhp 正确编码Json?,php,json,Php,Json,好吧,我现在重做我的问题,这样人们就能理解我想做什么 Search.php <?php $getItems = file_get_contents('Items.json'); if(isset($_GET['searchVal'])){ $getItems2 = json_decode($getItems, true); $data2 = array("items" => array(array())); foreach($getItems2['items'
<?php
$getItems = file_get_contents('Items.json');
if(isset($_GET['searchVal'])){
$getItems2 = json_decode($getItems, true);
$data2 = array("items" => array(array()));
foreach($getItems2['items'] as $data){
if(strpos($data['name'], $_GET['searchVal'])){
$data2 = array("items" => array(array($data)));
}
}
echo json_encode($data2,JSON_UNESCAPED_SLASHES);
} else{
echo $getItems;
}
循环中有以下内容:
$data2 = array(...)
…然后在循环外部引用$data2
当然,它将只包含最后一个条目,因为该行在循环每次迭代时都会用新数据覆盖$data2
如果要保留循环中的所有记录,请使用
$data2[] = array(...)
相反
[编辑]
进一步猜测您希望JSON看起来是什么样子,我猜您希望所有记录都位于items
数组中
在这种情况下,让我们重写$data2
行,如下所示:
$data2['items'][] = array($data);
这将把所有数据数组添加到$data2
中的项数组中。我会注意到你的数组结构非常复杂——嵌套数组太多了,这使得我现在很难确定我是否给出了你想要的答案,但如果它不完全正确,它将告诉你需要走的方向
您还需要在代码顶部添加一行,以初始化$data2
,如下所示:
$data2 = array('items'=>array());
这应该在使用$data2
之前的代码顶部的某个地方,并且在循环之外。您能发布您的阵列吗?实际出了什么问题?另外,您的echo json_encode
行可能应该在foreach循环之外,否则当有多个项目时,您将最终输出无效的json。是否希望data
作为键?是的,但如果我将其从循环中移出,它将不再正确显示。如果我搜索Karambit,那么它只显示一个武器,它是M4,因为您可能应该使用$data[]=array(…
并在循环之前定义数组。但我们不知道你在追求什么,谁知道呢。是的,使用它会很完美,但会弄乱JSON输出:/n还有其他方法吗?嗯,这取决于你的JSON输出应该是什么。你还没有真正指定。但我会尝试猜测并编辑答案y、 它几乎是完美的,唯一一件事是JSON中的[]
,所以在$data周围去掉额外的数组()层。(我保留了原来的结构,但我想说它可能没有必要)idk会把这些放在:-像这样完美,只是不全在那里。如果我使用$data2['items][]=array($data)
然后我想以某种方式摆脱那些