有些时候编程中的小事情会让巨人们感到高兴。我正在使用2维阵列,但我无法得到我需要的东西。
下面是我的数组结构。
Array
(
[0] => Array
(
[0] => 16
[id] => 16
[1] => 1
[userid] => 1
[2] => abc@gmail.com
[email] => abc@gmail.com
[3] => dffsdf
[message] => dffsdf
[4] => 0
[status] => 0
)
[1] => Array
(
[0] => 17
[id] => 17
[1] => 1
[userid] => 1
[2] => xyz@gmail.comnnn
[email] => xyz@gmail.comnnn
[3] => dffsdfnnnnnnnnnnn
[message] => dffsdfnnnnnnnnnnn
[4] => 0
[status] => 0
)
)
我在这里做的是为具有一些id的用户获取消息。我这样做是
if($get_mails[0]['userid'] == $_GET['userid'])
{
$last_key = end(array_keys($get_mails));
echo '{"Messages":[';
foreach($get_mails as $key => $get_each_mail){
$company_name = $get_each_mail['company_name'];
$email_id = $get_each_mail['id'];
$email_body = $get_each_mail['message'];
}
echo '{"CompanyName":"'.$company_name.'","MessageID":"'.$email_id.'","MessageBody":"'.$email_body.'"';
if ($key == $last_key)
{
echo '}]}';
}else{
echo'},';
}
}
我无法做到的是这么有趣,我需要在这行代码中为[0]循环
if($get_mails[0]['userid'] == $_GET['userid'])
喜欢
if($get_mails[i]['userid'] == $_GET['userid']) and it give me all the records against specific user.
这是我想要为特定用户提供的内容
{"Messages":[{"CompanyName":"newtech","MessageID":"14","MessageBody":"hi how are you"},{"CompanyName":"newtech","MessageID":"15","MessageBody":"hi how are you"},{"CompanyName":"newtech","MessageID":"24","MessageBody":"asfasdfsdfsdfsdfsdfsdfsdfsd"}]}
如果有更多的记录可供特定用户使用,就像这样,它会增加越来越多。
答案 0 :(得分:1)
假设$get_mails
包含您在上面发布的数组(包括company_name
),您可以这样写:
$output = Array( "Messages" => Array() );
foreach( $get_mails as $k => $arr ) {
$t = Array();
$t['CompanyName'] = $arr['company_name'];
$t['MessageID'] = $arr['id'];
$t['MessageBody'] = $arr['message'];
$output['Messages'][] = $t;
}
echo json_encode( $output );
首先,准备一个具有JSON结构的数组。语法$array[] = a
会将a
追加到$array
。最后json_encode( ... )
会将其转换为有效的JSON,即使您的某个键包含引号或其他在JSON中无效的特殊字符。
我相信您只想显示来自某个用户的消息,并尝试使用if($get_mails[0]['userid'] == $_GET['userid'])
来完成该消息。我建议将SQL查询更改为完成该操作的内容,因为如果您尝试使用以下代码搜索所有邮件,页面的性能将大大提高:
$output = Array( "Messages" => Array() );
foreach( $get_mails as $k => $arr ) {
if( $arr['user_id'] == $_GET['userid'] ) {
$t = Array();
$t['CompanyName'] = $arr['company_name'];
$t['MessageID'] = $arr['id'];
$t['MessageBody'] = $arr['message'];
$output['Messages'][] = $t;
}
}
echo json_encode( $output );