Tengo un problema que he logrado resolver pero creo que existe una forma más eficiente, o alguna función predefinida para hacerlo.
Yo tengo estos dos arrays:
$ar_totales[]['m_id']['m_titulo']
$ar_activos[]['m_id']['m_titulo']
En $ar_totales[] tengo 4 registros ($ar_totales[0], $ar_totales[1], $ar_totales[2]...) cada uno de los cuales tiene su propio "m_titulo" y "m_id".
En $ar_activos[] tengo solo algunos de los registros que existen $ar_totales... siempre trabajo con los mismos registros.
Yo deseo generar un nuevo array que contenga todos aquellos registros que están en $ar_totales y no están en $ar_activos. Este array será llamado $ar_pasivos[].
Ejemplo de cómo estarían cargados estos registros:
Código PHP:
// TOTALES
$ar_totales[0]['m_id'] = 1;
$ar_totales[0]['m_titulo'] = "SISTEMA";
$ar_totales[1]['m_id'] = 2;
$ar_totales[1]['m_titulo'] = "REDACCION";
$ar_totales[2]['m_id'] = 3;
$ar_totales[2]['m_titulo'] = "NEWSLETTER";
$ar_totales[3]['m_id'] = 4;
$ar_totales[3]['m_titulo'] = "ARCHIVOS";
// ACTIVOS
$ar_activos[0]['m_id'] = 2;
$ar_activos[0]['m_titulo'] = "REDACCION";
$ar_activos[1]['m_id'] = 4;
$ar_activos[1]['m_titulo'] = "ARCHIVOS";
Asi logre generar el nuevo array que me diga CUALES de los registros que figuran en "$ar_totales" no figuran en "$ar_activos":
Código PHP:
$flag = 0;
$x = 0;
for ($i=0; $i < count($ar_totales); $i++) {
for ($y=0; $y < count($ar_activos); $y++) {
if ($ar_totales[$i]['m_id'] == $ar_activos[$y]['m_id']) {
$flag = 0;
break;
} else {
$flag = 1;
continue;
}
}
if ($flag == 1) {
$ar_pasivos[$x]['m_id'] = $ar_totales[$i]['m_id'];
$ar_pasivos[$x]['m_titulo'] = $ar_totales[$i]['m_titulo'];
$x++;
$flag = 0;
}
}
¿Creen que hay alguna forma más standard de hacer esto ó está bien como lo hice?
Desde ya, muchas gracias!