Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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_Arrays_Foreach - Fatal编程技术网

Php 如果匹配,如何获取其他数组值?

Php 如果匹配,如何获取其他数组值?,php,arrays,foreach,Php,Arrays,Foreach,阵列1输出 Array ( [0] => Array ( [ID] => 335 [userid] => 4 [username] => demo [media_id] => 17 ) [1] => Array ( [ID] => 436 [userid] => 4 [username] => demo [media_id] => 18 ) [2] => Array ( [ID] =

阵列1输出

 Array ( 
       [0] => Array ( [ID] => 335 [userid] => 4 [username] => demo [media_id] => 17 ) 
       [1] => Array ( [ID] => 436 [userid] => 4 [username] => demo [media_id] => 18 )
       [2] => Array ( [ID] => 637 [userid] => 4 [username] => demo [media_id] => 19 ) 
       [3] => Array ( [ID] => 838 [userid] => 4 [username] => demo [media_id] => 20 ) 
 );
阵列2输出

 Array ( 
        [1] => Array ( [ID] => 35 [userid] => 4  [media_id] => 17 ) 
        [2] => Array ( [ID] => 36 [userid] => 4  [media_id] => 18 )
     );
如果匹配,如何获取其他数组值?我需要如果
array 2
media\u id
userid
array 1
中匹配,那么如何从
array 2
的每个循环中的
array 1
获取perticular
id
username

更新

$array1 = array ( 
    0 => array ( "ID" => "335", "userid" => "4", "username" => "demo", "media_id" => "17" ), 
    1 => array ( "ID" => "436", "userid" => "4", "username" => "demo", "media_id" => "18" ),
    2 => array ( "ID" => "637", "userid" => "4", "username" => "demo", "media_id" => "19" ), 
    3 => array ( "ID" => "838", "userid" => "4", "username" => "demo", "media_id" => "20" ) 
                      );

$array2 = array ( 
    1 => array ( "ID" => "35", "userid" => "4", "media_id" => "17" ),
    2 => array ( "ID" => "36", "userid" => "4", "media_id" => "18" )
                          );


      foreach($array2 as $array) {

          foreach($array1 as $get_data) {
                 if($array1['media_id'] == $get_data['media_id'] && $array1['userid'] == $get_data['userid']){
                                    $get_result[] = //get_data true;
                                   } else {
                                    $get_result[] = //get_data false;
                                   }
                                }


                      //get ID and username or show false value 


              }  
最终答案

foreach($array2 as $array) {
     $return = "false";
     foreach($array1 as $get_data) {
         if($array1['media_id'] == $get_data['media_id'] && $array1['userid'] == $get_data['userid']) {
         $get_result[] = ['ID' => $get_data['ID'], 'username' => $get_data['username']];
         $return = "true";
    }
  }

   if($return = "false"){
        echo false;
   }

}

如果我能很好地理解你的问题(我不确定),这应该可以:

foreach($array2 as $array) {
  foreach($array1 as $get_data) {
    if($array1['media_id'] == $get_data['media_id'] && $array1['userid'] == $get_data['userid']) {
      $get_result[] = ['ID' => $get_data['ID'], 'username' => $get_data['username']];
    }
  }
}
if (count($get_result) == 0) {
  $get_result[] = false;
}

不确定你的真正需要,但@gmc给了你(全部的一部分?)你需要的东西

<?php

$array1 = array ( 
0 => array ( "ID" => "335", "userid" => "4", "username" => "demo", "media_id" => "117" ), 
1 => array ( "ID" => "436", "userid" => "4", "username" => "demo", "media_id" => "118" ),
2 => array ( "ID" => "637", "userid" => "4", "username" => "demo", "media_id" => "19" ), 
3 => array ( "ID" => "838", "userid" => "4", "username" => "demo", "media_id" => "20" ) 
                  );

$array2 = array ( 
1 => array ( "ID" => "35", "userid" => "4", "media_id" => "17" ),
2 => array ( "ID" => "36", "userid" => "4", "media_id" => "18" )
                      );

$get_result = array();

  foreach($array2 as $array) {

      foreach($array1 as $get_data) {
             if( ($array['media_id'] == $get_data['media_id']) && ($array['userid'] == $get_data['userid'])) {
                                $get_result[] = ['ID' => $get_data['ID'], 'username' => $get_data['username']];
                               }
                            }
  }

if (count($get_result) == 0) {
echo"false";
}
else {
echo"true"; print_r($get_result); }
?>

/* I modified values to 117 & 118 -> returns "false" */
/* If you set values to 17 & 18 -> returns "true" */

/*我将值修改为117&118->返回“false”*/
/*如果将值设置为17和18->返回“true”*/

请输入一个有效的php数组,而不是输出在哪里尝试使用
foreach()
?我试过了,谢谢,但问题是,如果为false,我需要一个值。但它显示出多重假值。我想你明白了@如果不匹配,gmcAny选项仅获取一次false?我得到多个假值。我需要在第一个foreach中使用此值。有什么想法吗?谢谢你的帮助,但我终于解决了。检查答案。正在工作,但问题是相同的,我需要一个值
false
在else选项中只需要一次,但我需要多次。->我需要一个值false->你的意思是什么?“媒体id”=>“17”->true+“媒体id”=>“18”->true+“媒体id”=>“19”->false+“媒体id”=>“20”->false?但您需要将错误答案存储在哪里?请参阅gmc答案。我想他完全理解我的问题,我需要在第一个论坛上讨论这个问题。谢谢你的帮助,但最终我解决了这个问题。检查答案。