php中的多维数组循环
有时,编程中的小事情会变得巨大。我正在研究二维阵列,但我无法得到我需要的 下面是我的数组结构php中的多维数组循环,php,Php,有时,编程中的小事情会变得巨大。我正在研究二维阵列,但我无法得到我需要的 下面是我的数组结构 Array ( [0] => Array ( [0] => 16 [id] => 16 [1] => 1 [userid] => 1 [2] => abc@gmail.com [email] => abc@gmail.com
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'])
像
以下是我希望为特定用户获得的信息
{"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"}]}
这样,如果针对特定用户有更多可用记录,它将添加越来越多的记录。假设
$get\u mails
包含您在上面发布的数组(包括公司名称
),您可以这样写:
$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\u mails[0]['userid']=$\u 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 );
你在尝试制作JSON吗?是的,确切地说,我正在制作jasonUse
JSON\u encode()
,而不是尝试回显正确的字符。您能否将所需json的结构添加到问题中?将为您提供数组中的最后一项,而不是您刚刚匹配的项。另外,不要手动构建JSON。使用i Use end()仅获取endi中条件的最后一行id我解决了我的问题除了}之外,我的代码中没有错误。顺便说一句,感谢每一个人的善意、友好和及时的建议。这是我的正确代码,如果($get_-mail){$last_-key=end(array_-key($get_-mail));echo'{“Messages”:[';foreach($get_-mail as$key=>$get_-each-mail){$company_-name=$get_-each-mail['company_-name];$email_-id=$get-each['id];$email_-body=$get-each-mail['message];echo'{“CompanyName”:”:“.$company_name..”,“MessageID:“.$email_id..”,“MessageBody:“.$email_body..”“;if($key==$last_key){echo'}]}”;}else{echo'},;}}
$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 );