Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 - Fatal编程技术网

将php数组转换为单个JSON对象

将php数组转换为单个JSON对象,php,json,Php,Json,我在如何将php数组转换为JSON对象方面遇到了问题。无论我尝试什么,我要么将所有内容打印为多个对象,要么将其显示为空。将其包装在pre-tags中,以下是我得到的最接近的内容: 我的代码: $content = mysqli_query($dbcon, "SELECT title, last_name AS lastname FROM revision, field_last_name WHERE vid = entity_id;" ); echo "<pre>

我在如何将php数组转换为JSON对象方面遇到了问题。无论我尝试什么,我要么将所有内容打印为多个对象,要么将其显示为空。将其包装在
pre-tags
中,以下是我得到的最接近的内容:

我的代码:

$content = mysqli_query($dbcon, 
  "SELECT title, last_name AS lastname
   FROM revision, field_last_name
   WHERE vid = entity_id;"
);

echo "<pre>";
while($row = mysqli_fetch_array($content))
{
  print json_encode($row);
  print '<br/>';
}
echo "</pre>";
我的两个问题是:

1) 为什么在我的对象中有一个
“0”:“John Apple”
和一个
“1”:“Apple”
,而我想要的只是
“title”:“John Apple”
“lastname”:“Apple”

2) 为什么所有东西都显示为多个对象

谢谢

---编辑---

$arr=array()

echo”“;
while($row=mysqli\u fetch\u assoc($content))
{     
$arr[]=$row;
}
打印$arr;
回声“;
更改此选项:

$myarray = array();
while($row = mysqli_fetch_assoc($content))
{
  $myarray[] = $row;
  print '<br/>';
}
print json_encode($myarray);

…因为您正在打印多个对象。如果您想要一个单一的对象,它是一个数组,那么您需要将
mysql\u fetch\u assoc
(请参阅涵盖字段名与位置的其他答案)的结果附加到一个数组中,然后
json\u encode
一次完成该数组。例如:

$myarray=array();
while($row=mysqli\u fetch\u assoc($content))
{
$myarray[]=$row;
打印“
”; } 打印json_编码($myarray);
field\u last\u name是您的表名吗?您能否通过查询中的表名(如revision.title)来区分每个列名前缀,并在单个数组中获取所有数据,然后对其进行json_编码

$content=mysqli\u查询($dbcon,
“选择标题、姓氏作为姓氏”
从修订版,字段\姓氏\名称
其中vid=实体_id;”
);
$arr=array();
回声“;
while($row=mysqli\u fetch\u assoc($content))
{
$arr[]=$row;
}
打印(json编码($arr));
回声“;

因为您在while循环中调用它,它将对每一行进行json编码。field\u last\u name是您的表名吗?您能否通过查询中的表名(如revision.title)来区分每个列名前缀,并在单个数组中获取所有数据,然后对其进行json_编码?这只会打印出一行并停止,不是一个数组对象中的所有行。我已经研究了您所说的,在列名前面添加表名不会改变我的结果。使用您提供的while循环刚刚为我生成了一个空白的白色屏幕。请查看我在上面所做的编辑。您可以在while循环中打印r($row)吗?让我知道你得到了什么?这似乎已经做到了,但我不明白你改变了什么使它工作?“你能解释一下吗?”替罪羊17:这是第一次。我们应该使用print\u r或var\u dump来打印数组,因为您并没有看到结果。你一个接一个地打印数组。如果成功了,那就接受吧:)哈哈,我会接受的,但我还是不明白你是怎么回答我的第一个问题的。你能详细说明一下吗?更改为mysql\u fetch\u assoc只会给我显示一个空白的白色屏幕。请查看我在上面对我的问题所做的编辑。任何时候出现空白屏幕时,请检查您的错误日志。一个空白的屏幕意味着脚本死了。假设您的编辑是逐字进行的,则缺少分号。
echo "<pre>";   

while($row = mysqli_fetch_assoc($content))
{     
  $arr[] = $row;
}

print $arr;
echo "</pre>";
while($row = mysqli_fetch_array($content))
{
  print json_encode($row);
  print '<br/>';
}
$row = mysqli_fetch_assoc($content);
json_encode($row);
$myarray = array();
while($row = mysqli_fetch_assoc($content))
{
  $myarray[] = $row;
  print '<br/>';
}
print json_encode($myarray);
   $content = mysqli_query($dbcon, 
      "SELECT title, last_name AS lastname
       FROM revision, field_last_name
       WHERE vid = entity_id;"
    );
    $arr = array();

    echo "<pre>";
    while($row = mysqli_fetch_assoc($content))
    {
      $arr[] = $row;
    }
      print_r(json_encode($arr));


    echo "</pre>";