Reputation: 607
First of all, I have seen the "similar" questions, none of them solve my problem, what I need is that the "impuesto" value of the array "a" is equal to the key of the array "b". and if not, remove those that are not equal to the array "b"
I have two multidimensional arrays (a and b). and I need to filter all those who are not in the first
Example:
a)
[1]=>
array(1) {
["impuesto"]=>
string(11) "recaudacion"
}
[3]=>
array(1) {
["impuesto"]=>
string(36) "Contribuyentes Convenio Multilateral"
}
[4]=>
array(1) {
["impuesto"]=>
string(28) "Regimen General de Retencion"
}
b)
["recaudacion"]=>
array(1) {
[9]=>
string(10) "2017-10-07"
}
["Contribuyentes Convenio Multilateral"]=>
array(1) {
[9]=>
string(10) "2017-10-13"
}
["Contribuyentes Locales,Activid. Especiales y Salas de Recreacion"]=>
array(1) {
[9]=>
string(10) "2017-10-16"
}
result:
["recaudacion"]=>
array(1) {
[9]=>
string(10) "2017-10-07"
}
["Contribuyentes Convenio Multilateral"]=>
array(1) {
[9]=>
string(10) "2017-10-13"
}
Here you can see the original arrays
a)
array(2) {
[0]=>
array(1) {
[257]=>
array(18) {
[0]=>
array(1) {
["impuesto"]=>
string(38) "Ingresos Brutos Contribuyentes Locales"
}
[1]=>
array(1) {
["impuesto"]=>
string(11) "recaudacion"
}
[2]=>
array(1) {
["impuesto"]=>
string(64) "Contribuyentes Locales,Activid. Especiales y Salas de Recreacion"
}
[3]=>
array(1) {
["impuesto"]=>
string(36) "Contribuyentes Convenio Multilateral"
}
[4]=>
array(1) {
["impuesto"]=>
string(28) "Regimen General de Retencion"
}
[5]=>
array(1) {
["impuesto"]=>
string(41) "Regimen General de Percepcion (Devengado)"
}
[6]=>
array(1) {
["impuesto"]=>
string(46) "Comercializacion de Combustibles liquidos deri"
}
[7]=>
array(1) {
["impuesto"]=>
string(44) "Registro Seccional de la Propiedad Automotor"
}
[8]=>
array(1) {
["impuesto"]=>
string(19) "Entidades Bancarias"
}
[9]=>
array(1) {
["impuesto"]=>
string(60) "Companias de Seguros Embarcaciones Deportivas y Recreaciones"
}
[10]=>
array(1) {
["impuesto"]=>
string(21) "Empresas de Servicios"
}
[11]=>
array(1) {
["impuesto"]=>
string(20) "Regimen simplificado"
}
[12]=>
array(1) {
["impuesto"]=>
string(3) "IVA"
}
[13]=>
array(1) {
["impuesto"]=>
string(29) "EMPLEADOR-APORTES SEG. SOCIAL"
}
[14]=>
array(1) {
["impuesto"]=>
string(25) "REGIMENES DE INFORMACIÓN"
}
[15]=>
array(1) {
["impuesto"]=>
string(52) "Declaracion Jurada Fiscal 2016 Contibuyentes Locales"
}
[16]=>
array(1) {
["impuesto"]=>
string(29) "PRESENTAC. DJ RET. Y/O PERCEP"
}
[17]=>
array(1) {
["impuesto"]=>
string(28) "SICORE-IMPTO.A LAS GANANCIAS"
}
}
}
[1]=>
array(1) {
[258]=>
array(3) {
[0]=>
array(1) {
["impuesto"]=>
string(19) "Impuestos de Sellos"
}
[1]=>
array(1) {
["impuesto"]=>
string(69) "Declaracion Jurada anual 2016 Contribuyentes de convenio multilateral"
}
[2]=>
array(1) {
["impuesto"]=>
string(51) "Recategorizacion cuatrimestral regimen simplificado"
}
}
}
}
b)
array(2) {
[0]=>
array(1) {
[257]=>
array(8) {
["recaudacion"]=>
array(1) {
[9]=>
string(10) "2017-10-07"
}
["Contribuyentes Convenio Multilateral"]=>
array(1) {
[9]=>
string(10) "2017-10-13"
}
["Contribuyentes Locales,Activid. Especiales y Salas de Recreacion"]=>
array(1) {
[9]=>
string(10) "2017-10-16"
}
["Regimen simplificado"]=>
array(1) {
[9]=>
string(10) "2017-10-00"
}
["Declaracion Jurada Fiscal 2016 Contibuyentes Locales"]=>
array(1) {
[9]=>
string(10) "2017-10-00"
}
["Recategorizacion cuatrimestral regimen simplificado"]=>
array(1) {
[9]=>
string(10) "2017-10-00"
}
["Declaracion Jurada anual 2016 Contribuyentes de convenio multilateral"]=>
array(1) {
[9]=>
string(10) "2017-10-00"
}
["Impuestos de Sellos"]=>
array(1) {
[9]=>
string(10) "2017-10-10"
}
}
}
[1]=>
array(1) {
[258]=>
array(8) {
["recaudacion"]=>
array(1) {
[9]=>
string(10) "2017-10-07"
}
["Contribuyentes Convenio Multilateral"]=>
array(1) {
[9]=>
string(10) "2017-10-13"
}
["Contribuyentes Locales,Activid. Especiales y Salas de Recreacion"]=>
array(1) {
[9]=>
string(10) "2017-10-17"
}
["Regimen simplificado"]=>
array(1) {
[9]=>
string(10) "2017-10-00"
}
["Declaracion Jurada Fiscal 2016 Contibuyentes Locales"]=>
array(1) {
[9]=>
string(10) "2017-10-00"
}
["Recategorizacion cuatrimestral regimen simplificado"]=>
array(1) {
[9]=>
string(10) "2017-10-00"
}
["Declaracion Jurada anual 2016 Contribuyentes de convenio multilateral"]=>
array(1) {
[9]=>
string(10) "2017-10-00"
}
["Impuestos de Sellos"]=>
array(1) {
[9]=>
string(10) "2017-10-10"
}
}
}
}
if you need to see the code just ask for it, there will be no problem in showing it
Upvotes: 1
Views: 65
Reputation: 8361
I achieve this by using nested foreach loop, you can try my code here: php sandbox, it keeps the same a array except keys from b array.
Upvotes: 1
Reputation: 8611
The key here is to use array_key_exists. So you loop on the values from array a) and check if they exists in array b). If they do, put them in the result array. Like this:
$arraya = array(
1 => array("impuesto" => "recaudacion"),
3 => array("impuesto" => "Contribuyentes Convenio Multilateral"),
4 => array("impuesto" => "Regimen General de Retencion")
);
$arrayb = array(
"recaudacion" => array(9 => "2017-10-07"),
"Contribuyentes Convenio Multilateral" => array(9 => "2017-10-13"),
"Contribuyentes Locales,Activid. Especiales y Salas de Recreacion" => array(9 => "2017-10-16")
);
echo "<pre>\n";
echo "ARRAY A\n";
print_r($arraya);
echo "\nARRAY B\n";
print_r($arrayb);
# filter
$result = array();
foreach ($arraya as $key => $value)
{
$impuesto_value = "$value[impuesto]";
if (array_key_exists($impuesto_value, $arrayb))
{
$result[$impuesto_value] = $arrayb[$impuesto_value];
}
}
echo "\nRESULT ARRAY\n";
print_r($result);
echo "</pre>\n";
This will output the following:
ARRAY A Array ( [1] => Array ( [impuesto] => recaudacion ) [3] => Array ( [impuesto] => Contribuyentes Convenio Multilateral ) [4] => Array ( [impuesto] => Regimen General de Retencion ) ) ARRAY B Array ( [recaudacion] => Array ( [9] => 2017-10-07 ) [Contribuyentes Convenio Multilateral] => Array ( [9] => 2017-10-13 ) [Contribuyentes Locales,Activid. Especiales y Salas de Recreacion] => Array ( [9] => 2017-10-16 ) ) RESULT ARRAY Array ( [recaudacion] => Array ( [9] => 2017-10-07 ) [Contribuyentes Convenio Multilateral] => Array ( [9] => 2017-10-13 ) )
Upvotes: 1