我正在使用MySQL构建消息传递系统。到目前为止,一切都很美妙,但我需要做一件特别的事情。
在其中一个表格中,我有“sender_id”列。
我接受'sender_id'并通过一个函数运行它,然后检索用户头像并在返回的JSON响应中输出链接。
我需要这个链接...但我还需要能够将'sender_id'本身作为一个数字检索,以便我可以在jquery中对它进行测试。
所以我最终将原来的'sender_id'复制并放入一个虚拟列中,然后将它'加入'获取头像'功能。
我在查询等之后用于输出JSON的代码如下: -
/*
* Output
*/
$output = array(
"sEcho" => intval($_GET['sEcho']),
"iTotalRecords" => $iTotal,
"iTotalDisplayRecords" => $iFilteredTotal,
"aaData" => array()
);
while ( $aRow = mysql_fetch_array( $rResult ) )
{
$row = array();
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
if ( $aColumns[$i] == "version" )
{
/* Special output formatting for 'version' column */
$row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ];
}
if ( $aColumns[$i] == "sender_id" )
{
/* Special output to render Avatar by user id */
$row[] = commentplayer_get_user_avatar($aRow[ $aColumns[$i] ]);
}
else if ( $aColumns[$i] == "message" )
{
/* General output */
$row[] = strip_slashes($aRow[ $aColumns[$i] ]);
}
else if ( $aColumns[$i] != ' ' )
{
/* General output */
$row[] = $aRow[ $aColumns[$i] ];
}
}
$output['aaData'][] = $row;
}
echo json_encode( $output );
?>
$ aColumns是前面定义的列数组,显然'sender_id'就是其中之一。正如您所看到的,我已经放入条件语句,以便将sender_id重新设置为头像链接而不是实际的sender_id。因此,我只需要能够将实际的sender_id以及化身拉出来,最好是单独的列。
有什么想法吗?
答案 0 :(得分:1)
您可以在处理列sender_id
:
if ( $aColumns[$i] == "sender_id" )
{
/* Output user id */
$row[] = $aRow[ $aColumns[$i]] );
/* Special output to render Avatar by user id */
$row[] = commentplayer_get_user_avatar($aRow[ $aColumns[$i] ]);
}
这将在每个返回的JSON行数组中的头像URL之前插入用户ID。
事实上,摆脱列上的for循环会更好,只需用你需要的项填充$row
,用专有名称索引,而不是依赖于顺序。这样可以更轻松地查看实际附加到$output
的内容。它确实意味着在客户端解释JSON时,您必须将该行视为对象而不是数组。
$row = array(
"version" => ($aRow["version"] == "0") ? '-' : $aRow["version"],
"sender_id" => $aRow["sender_id"],
"avatar" => commentplayer_get_user_avatar($aRow["sender_id"]),
"message" => strip_slashes($aRow["message"]),
// other items here
);