Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的多维数组循环_Php - Fatal编程技术网

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 );