如何过滤两个多维数组?

时间:2017-10-30 17:23:26

标签: php arrays multidimensional-array

首先,我看到了“类似”的问题,它们都没有解决我的问题,我需要的是数组“a”的“impuesto”值等于数组“b”的键。如果没有,删除那些不等于数组“b”

的那些

我有两个多维数组(a和b)。我需要过滤所有不在第一个

的人

示例:

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"
  }

结果:

    ["recaudacion"]=>
  array(1) {
    [9]=>
    string(10) "2017-10-07"
  }
  ["Contribuyentes Convenio Multilateral"]=>
  array(1) {
    [9]=>
    string(10) "2017-10-13"
  }

在这里你可以看到原始数组

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"
      }
    }
  }
}

如果您需要查看代码只是要求它,那么显示它就没有问题

2 个答案:

答案 0 :(得分:1)

这里的关键是使用array_key_exists。所以你循环数组a)中的值并检查它们是否存在于数组b)中。如果是,请将它们放在结果数组中。像这样:

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
        )

)

这将输出以下内容:

{{1}}

答案 1 :(得分:1)

我通过使用嵌套的foreach循环来实现这一点,你可以在这里尝试我的代码:php sandbox,除了来自b数组的键之外,它保持相同的数组。