代码之家  ›  专栏  ›  技术社区  ›  Punit Gajjar

PHP:从另一个数组中获取相同键的值

  •  1
  • Punit Gajjar  · 技术社区  · 6 年前

    我有两个不同的数组

    $result = array(
        "2018-08-30" => 8
        "2018-08-31" => 2
        "2018-09-04" => 4
        "2018-09-20" => 1
        "2018-09-24" => 1
        "2018-09-27" => 2
      );
    

    $dateRanges = array(
      "2018-08-28" => 0
      "2018-08-29" => 1
      "2018-08-30" => 2
      "2018-08-31" => 3
      "2018-09-01" => 4
      "2018-09-02" => 5
      "2018-09-03" => 6
      "2018-09-04" => 7
      "2018-09-05" => 8
      "2018-09-06" => 9
      "2018-09-07" => 10
      "2018-09-08" => 11
      "2018-09-09" => 12
      "2018-09-10" => 13
      "2018-09-11" => 14
      "2018-09-12" => 15
      "2018-09-13" => 16
      "2018-09-14" => 17
      "2018-09-15" => 18
      "2018-09-16" => 19
      "2018-09-17" => 20
      "2018-09-18" => 21
      "2018-09-19" => 22
      "2018-09-20" => 23
      "2018-09-21" => 24
      "2018-09-22" => 25
      "2018-09-23" => 26
      "2018-09-24" => 27
      "2018-09-25" => 28
      "2018-09-26" => 29
      "2018-09-27" => 30
    );
    

    我想把日期的值从Array1赋值到Array2;

    $dateRanges = array(
      "2018-08-28" => 0
      "2018-08-29" => 0
      "2018-08-30" => 8
      "2018-08-31" => 2
      "2018-09-01" => 0
      "2018-09-02" => 0
      "2018-09-03" => 0
      "2018-09-04" => 4
      "2018-09-05" => 0
      "2018-09-06" => 0
      "2018-09-07" => 0
      "2018-09-08" => 0
      "2018-09-09" => 0
      "2018-09-10" => 0
      "2018-09-11" => 0
      "2018-09-12" => 0
      "2018-09-13" => 0
      "2018-09-14" => 0
      "2018-09-15" => 0
      "2018-09-16" => 0
      "2018-09-17" => 0
      "2018-09-18" => 0
      "2018-09-19" => 0
      "2018-09-20" => 1
      "2018-09-21" => 0
      "2018-09-22" => 0
      "2018-09-23" => 0
      "2018-09-24" => 1
      "2018-09-25" => 0
      "2018-09-26" => 0
      "2018-09-27" => 2
    );
    

    我使用foreach循环来检查我的日期是否存在 $dateRanges 数组,但我想知道有没有像使用 array_column array_combine array_walk 功能。

    谢谢

    2 回复  |  直到 6 年前
        1
  •  2
  •   Mohammad DefenestrationDay    6 年前

    你可以使用 array_map() array_merge()

    $newArr = array_merge(array_map(function($v){return 0;}, $dateRanges), $result);
    

    签入结果 demo

        2
  •  1
  •   Cobra_Fast    6 年前

    以下操作应该可以工作,从 $array1 $array2 或设置 0 如果不存在值。
    我还没有测试过这个代码,所以可能需要稍微调整一下。

    $array1 = array(/*...*/);
    $array2 = array(/*...*/);
    array_walk($array2, function (&$v, $k) use ($array1) {
        if (isset($array1[$k]))
            $v = $array1[$k];
        else
            $v = 0;
    });