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"}]}

像这样响应,如果可以针对特定用户使用更多记录,它将添加越来越多。

4

1 回答 1

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 );
于 2013-09-29T15:39:12.710 回答