json解码/编码重复数组

时间:2014-11-13 16:31:21

标签: php json

嘿我已经设法解码我创建的编码json但是当我尝试打印解码的数组时,它会一遍又一遍地重复相同的用户名(列表中的最后一个)。我想要的是所有用户都被展示

这是编码的json数组的代码

$query = 
  "SELECT 
  userid, 
  username, 
  password, 
  email 
  FROM Users ORDER BY userid";

$results = mysqli_query($connection,$query);

下面的编码数组代码

<?php
echo "Data with Json Encoding";
foreach($results as $row){

    $encode = json_encode($row, true);
    echo '<pre>';print_r($encode); echo '</pre>';
    }
 ?>

下面的解码数组代码

<?php
    echo "Data with Json Decoding";
    foreach($results as $row){
    $decode = json_decode($encode, true);
    echo '<pre>'; print_r($decode);'</pre>';
   }

这是代码Data with Json Decoding

的结果
Array
(
    [userid] => 239
    [username] => desposit4221
    [password] => 699e5fae54df4c82314e42dd86c4d383
    [email] => ad471993@hotmail.com
) 

Array
(
    [userid] => 239
    [username] => desposit4221
    [password] => 699e5fae54df4c82314e42dd86c4d383
    [email] => ad471993@hotmail.com
)

这是一遍又一遍,它应该是我的用户列表

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

echo "Data with Json Encoding";
$encodedResults = array();
foreach($results as $row){

    $encode = json_encode($row, true);
    echo '<pre>';print_r($encode); echo '</pre>';

    $encodedResults[] = $encode;
}
 ?>
echo "Data with Json Decoding";
foreach($encodedResults as $row){
    $decode = json_decode($row, true);
    echo '<pre>'; print_r($decode);'</pre>';
}

答案 1 :(得分:0)

如果你放行

$encode = json_encode($row, true);

foreach行之后的第二个循环中,您应该得到您期望的结果。这是探索php的数据管理方面的合理方法。祝你的项目好运!

答案 2 :(得分:0)

对您的阵列进行编码:

echo "Data with Json Encoding";
$encoded_datas = json_encode($results);
echo $encoded_datas;

将字符串解码为数组:

echo "Data with Json Decoding";
$decoded_datas = json_decode($encoded_datas, true);
echo '<pre>';
print_r($decoded_datas);
echo '</pre>';

您不需要逐行编码(然后解码)数组。 另外,正如评论中所解释的那样,并且如 costa 的回答所示,您的代码无效,因为您每次都在解码相同的字符串:您的$encoded变量包含最后一个值放入(你编码的最后一行)。