创建数组/ json对象,无法完成这项工作

时间:2012-12-16 15:37:36

标签: php javascript arrays json key

我有一个相当复杂的情况,我需要工作,由于某种原因我几乎在那里,但仍然不完全。

在PHP中,我创建数组并通过json向它发送javascript,我很确定我的问题出现在代码的这一部分。

$insertIDs = array();

foreach($recipients as $userID)
{   
            //MySQL insert removed from question 
    $insertID = mysql_insert_id();
    array_push($insertIDs, $array[$userID] = $insertID);
}


$json = array();
$json['fromID'] = $session;
$json['insertIDs'] = $insertIDs;
    $json['recipients'] = $recipients;
echo json_encode($json);

当我在javascript中使用console.log结果时,我得到:

{ messageID: 40,
  fromID: '1',
  insertIDs: [ 44 ],
  recipients: [ '3' ] }

现在在javascript中,当我尝试通过userID访问insertID时,我将其设置为上面的php,我只是得到了未定义的结果。我该怎么做才能通过userID访问每个insertID?

例如:json.insertIDs[userID]

如果我只是通过以下方式调用它:json.insertIDs[0]它确实返回第一个insertID,但是当有多个时,我需要能够轻松访问每个usersID insertID。

2 个答案:

答案 0 :(得分:0)

我不太确定你要做什么,因为在forloop $ insertID总是相同的值,但是:

似乎json.InsertIDs是json.InsertIds = Array(44)形式的数组;

您希望它在哪里为Array(3 => 44)

尝试从

更改你的forloop
foreach($recipients as $userID){   
$insertID = mysql_insert_id();
array_push($insertIDs, $array[$userID] = $insertID);
}

foreach($recipients as $userID){   
    $insertID = mysql_insert_id();
    $insertIDs[$userID] = $insertID;
}

答案 1 :(得分:0)

似乎mysql_insert_id()返回的值每次都是相同的,除非在foreach()循环中有一个INSERT查询。是否缺少代码的一部分?