Php 在多维数组中合并重复的数组值
我有一个多维数组,比如说Php 在多维数组中合并重复的数组值,php,arrays,Php,Arrays,我有一个多维数组,比如说 Array ( [0] => Array ( [id] => 1 [email_id] => ok@gmail.com [password] => test ) [1] => Array ( [id] => 2 [email_id] => che
Array
(
[0] => Array
(
[id] => 1
[email_id] => ok@gmail.com
[password] => test
)
[1] => Array
(
[id] => 2
[email_id] => check@gmail.com
[password] => test
)
[2] => Array
(
[id] => 3
[email_id] => an@gmail.com
[password] => pass
)
)
在上面的数组中,密码键在两个键中具有相同的值,我需要合并具有重复值的数组以获得以下输出
Array
(
[0] => Array
(
[0] => Array
(
[id] => 1
[email_id] => ok@gmail.com
[password] => test
)
[1] => Array
(
[id] => 2
[email_id] => check@gmail.com
[password] => test
)
)
[1] => Array
(
[id] => 3
[email_id] => an@gmail.com
[password] => pass
)
)
如何做到这一点?我尝试了array\u merge&foreach循环,但无法获得此输出
$arr = array( array('id'=>1, 'email_id'=>'ok@gmail.com', 'password'=>'test'),
array('id'=>2, 'email_id'=>'check@gmail.com', 'password'=>'test'),
array('id'=>3, 'email_id'=>'an@gmail.com', 'password'=>'pass'));
$new_arr = array();
foreach($arr as $k => $v) {
if( is_array($arr[$k+1]) && $arr[$k]['password'] === $arr[$k + 1]['password'] )
$new_arr[] = array($arr[$k], $arr[$k+1]);
else if( in_array_recursive($arr[$k]['password'], $new_arr) === FALSE )
$new_arr[] = $v;
}
function in_array_recursive( $val, $arr) {
foreach( $arr as $v ) {
foreach($v as $m) {
if( in_array($val, $m ) )
return TRUE;
}
}
return FALSE;
}
print_r($new_arr);
试试看
$arr = array( array('id'=>1, 'email_id'=>'ok@gmail.com', 'password'=>'test'),
array('id'=>2, 'email_id'=>'check@gmail.com', 'password'=>'test'),
array('id'=>3, 'email_id'=>'an@gmail.com', 'password'=>'pass'));
$new_arr = array();
foreach($arr as $k => $v) {
if( is_array($arr[$k+1]) && $arr[$k]['password'] === $arr[$k + 1]['password'] )
$new_arr[] = array($arr[$k], $arr[$k+1]);
else if( in_array_recursive($arr[$k]['password'], $new_arr) === FALSE )
$new_arr[] = $v;
}
function in_array_recursive( $val, $arr) {
foreach( $arr as $v ) {
foreach($v as $m) {
if( in_array($val, $m ) )
return TRUE;
}
}
return FALSE;
}
print_r($new_arr);
是否仅根据索引
密码的值确定重复项?为此,您必须使用自己的合并功能。您只需使用foreach循环即可,该循环将确定两个数组是否重复,如果重复,则创建一个具有重复项的数组I dnt有两个不同的数组要合并…具有多个键值的单个数组仅根据索引密码
的值确定重复项,您必须使用自己的合并功能。您只需使用foreach循环即可,该循环将确定两个数组是否重复,如果重复,则使具有重复项的数组具有两个不同的要合并的数组…具有多个键值的单个数组