Php 如果匹配,如何获取其他数组值?
阵列1输出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] =
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
获取perticularid
和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答案。我想他完全理解我的问题,我需要在第一个论坛上讨论这个问题。谢谢你的帮助,但最终我解决了这个问题。检查答案。