Php 如何对json_编码进行json_解码

Php 如何对json_编码进行json_解码,php,json,Php,Json,我正在尝试使用json_decode来组合几个json对象。。我需要根据唱片集id检索数据库值,。但我不能 有人能告诉我我在哪里犯了错误吗 $album_ids_id = array("album_ids"=>array(2,4,5)); // $album_ids = $_REQUEST['alb_id']; $album_ids = json_encode($album_ids_id); $id_list_array = json_decode($album_ids,true);

我正在尝试使用json_decode来组合几个json对象。。我需要根据唱片集id检索数据库值,。但我不能

有人能告诉我我在哪里犯了错误吗

$album_ids_id = array("album_ids"=>array(2,4,5));
// $album_ids = $_REQUEST['alb_id'];

$album_ids = json_encode($album_ids_id);

$id_list_array = json_decode($album_ids,true);

$id_array = $id_list_array->album_ids;

var_dump($id_list_array);

for($i=0;$i<sizeof($id_array);$i++)
  {

    $alb_id = $id_array[$i]->alb_id;


    $album_sel_query = "SELECT a.a_id as id,a.a_name as name,round((b.total_value/b.total_votes),1) as rating,b.total_votes,b.total_value,a.a_pic as image,c.b_name FROM _album a inner join ratings b on b.id=a.a_id INNER JOIN _band c on c.b_id=a.b_id where a.a_id='".$alb_id."' "; 
    $result = mysql_query($album_sel_query);
    if (!$result)
      die("mySQL error: ". mysql_error());

    $count = mysql_num_rows($result);

    if($count > 0)
      {

        while($data = mysql_fetch_array($result))
          {
            $alb_name =$data['name']; 

            $singer = $data['b_name'];

            $rating = $data['rating'];

            $rate_value = $data['total_value'];

            $rate_votes = $data['total_votes'];

            $alb_pic =$data['image']; 
            $resmsg[] = array("Album_id"=>$alb_id,"Album_name"=>$alb_name,"Album_singer"=>$singer,"Album_rating"=>$rating,"Rating_total_value"=>$rate_value,"Rating_total_votes"=>$rate_votes,"Album_image_name"=>$alb_pic);

          }

        $jsonarr = array("response"=>array("success"=>"Y","ALBUM_DETAILS"=>$resmsg));
      }
    else
      {
        $jsonarr = array("response"=>array("success"=>"N","ALBUM_DETAILS"=>"Data not found"));
      }
  }
echo json_encode($jsonarr);

这与json无关。错误在第一行。使用同一个键三次,但数组键是唯一的

array("alb_id"=>"2","alb_id"=>"4","alb_id"=>"5");
必须是:

array(2, 4, 5);

首先,这是无效的:

$album_ids_id = array("album_ids"=>array("alb_id"=>"2","alb_id"=>"4","alb_id"=>"5"));
数组中的键只能有一个值,同一数组中不能有多个
alb_id
键。应该是:

$album_ids_id = array("album_ids"=>array(2, 4, 5));
$id_array = $id_list_array['album_ids'];
其次,由于您将
true
作为
json\u decode()
的第二个参数,因此它返回关联数组,而不是对象。所以

$id_array[] = $id_list_array->album_ids;
应该是:

$album_ids_id = array("album_ids"=>array(2, 4, 5));
$id_array = $id_list_array['album_ids'];
还请注意,
[]
$id\u数组
的末尾不应该有一个
[]
——它只在您想要将新元素推送到数组上时使用,而不是在分配数组变量本身时使用

然后将
for
循环更改为:

foreach ($id_array as $alb_id) {

然后去掉循环中的
$alb_id
赋值。

谢谢,。我得到了正确的数组格式,。但在检索数据库值方面仍然存在问题我的foreach中存在一些问题???我不知道,是吗?是的,如果我使用foreach,它不带值..我不知道“不带值”是什么意思。如果您修复了数组分配中的其他问题,
$id\u array
应该是一个数字数组,
foreach
应该迭代它们——这是基本的PHP语法。