【问题标题】:I am trying to encode an array into json but the loop is not working like it should我正在尝试将数组编码为 json,但循环无法正常工作
【发布时间】:2017-03-26 05:37:34
【问题描述】:

我想要一个数组是 json_encode(),但它不能处理这个

foreach($sub_ids as $sub_id){
    $query = "SELECT * FROM sub_main WHERE sub_main_id = ".$sub_id;
    $result=mysqli_query($con, $query);
    $row1= mysqli_fetch_assoc($result);
    $name = (String)$sub_id;
    $main["sub_heading".$sub_id]=$row1['sub_main_heading'];
    $main["sub_content".$sub_id]=$row1['sub_main_content'];
    $main["sub_images".$sub_id]=$row1['sub_main_images'];
    $main["sub_id".$sub_id]=$row1['sub_main_ids'];}
echo json_encode($main);

Sub_id 为 1 2 3

print_r($sub_ids);

表演

Array ( [0] => 1 [1] => 2 [2] => 3 )

但是当我删除 $sub_id 时它会起作用,并且最终会覆盖之前的循环值。

基本上 json_encode 是为 $main['sub_heading'] 但不适用于 $main['sub_heading'.#sub_id]

它创建一个数组但不将其编码为 json。请帮忙。

【问题讨论】:

  • print_r($sub_id) 并在此处显示。

标签: php arrays json loops


【解决方案1】:

我假设$sub_id 是一个对象。因此,您转换为 $name=(String) $sub_id 中的字符串。那么您的解决方案是将$main["sub_heading".$sub_id] 更改为$main["sub_heading".$name] 并且都应该是金色的

$main["sub_heading".$name]=$row1['sub_main_heading'];
$main["sub_content".$name]=$row1['sub_main_content'];
$main["sub_images".$name]=$row1['sub_main_images'];
$main["sub_id".$name]=$row1['sub_main_ids'];}

【讨论】:

  • 然后我会将 print_r ($main) 移动到循环中,这样您就可以监控数据是如何填充的,并查看它为什么会爆炸。这可能是内存限制问题
  • 它创建了以下数组,但它没有将其编码为 json,我如何将其编码为 json,我要更改什么。如果我创建一个像 $main['this']=$row1['that'] 这样的数组但是当我使用 $main['this'.$sub_id]= $row1['that'.$sub_id] 在循环中,它不起作用
  • 有2个答案,1你超出了内存限制。 2)数据不是UTF-8格式(如某些特殊字符)。那些可以轰出一个 json_encode 请求。所以print_r很重要,可以看看有没有这么坏的字符
猜你喜欢
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 2019-01-01
相关资源
最近更新 更多