【问题标题】:How to intersect multiple multi-dimensional arrays如何交叉多个多维数组
【发布时间】:2018-10-15 09:29:23
【问题描述】:

我有如下两个不同的多维数组:

Array //1st_array
(
    [0] => Array
        (
            [timestamp] => 7/10/2018 15:24:06
            [username] => giakhang
            [status] => 
        )

    [1] => Array
        (
            [timestamp] => 8/10/2018 5:11:25
            [username] => haophan
            [status] => 
        )

    [2] => Array
        (
            [timestamp] => 8/10/2018 6:38:18
            [username] => TTQ1504
            [status] => 
        )

    [3] => Array
        (
            [timestamp] => 08/10/2018 7:04:20
            [username] => btcgainer24724
            [status] => 
        )

)


Array //2nd_array
(
    [0] => Array
        (
            [timestamp] => 8/10/2018 5:10:06
            [username] => giakhang
        )

    [1] => Array
        (
            [timestamp] => 8/10/2018 5:13:25
            [username] => btcgainer24724
        )

    [2] => Array
        (
            [timestamp] => 8/10/2018 6:44:18
            [username] => anggie88
        )

    [3] => Array
        (
            [timestamp] => 08/10/2018 7:55:20
            [username] => ZeusTrade
        )

)

对于1st_array2nd_array 之间的每个相同的username,我希望将1st_arrayunset 中的status2nd_array 对象中更改为两者之间不相交,如下所示:

Array //1st_array
(
    [0] => Array
        (
            [timestamp] => 7/10/2018 15:24:06
            [username] => giakhang
            [status] => Yes
        )

    [1] => Array
        (
            [timestamp] => 8/10/2018 5:11:25
            [username] => haophan
            [status] => No
        )

    [2] => Array
        (
            [timestamp] => 8/10/2018 6:38:18
            [username] => TTQ1504
            [status] => No
        )

    [3] => Array
        (
            [timestamp] => 08/10/2018 7:04:20
            [username] => btcgainer24724
            [status] => Yes
        )

)


Array //2nd_array
(
    [0] => Array
        (
            [timestamp] => 8/10/2018 5:10:06
            [username] => giakhang
        )

    [1] => Array
        (
            [timestamp] => 8/10/2018 5:13:25
            [username] => btcgainer24724
        )

)

如何让这些多维数组相交?

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    试试这个:

    foreach ($second_array as $key => $value) {
            $exist = false;
            foreach ($first_array as $key2 => $value2) {
                if ($value['username'] == $value2['username']) {
                    $exist = true;
                    $first_array[$key2]['status'] = 'Yes';
                    break;
                } elseif (!$first_array[$key2]['status']) {
                    $first_array[$key2]['status'] = 'No';
                }
            }
    
            if (!$exist) {
    
                unset($second_array[$key]);
            }
        }
    

    【讨论】:

      【解决方案2】:

      可能会有更清洁的解决方案,但这是我的尝试:

      foreach ($1stArray as $1st) {
          foreach ($2ndArray as $2nd) {
              if ($1st['username'] == $2nd['username']) 
                  $1st['status'] = 'Yes';
          }
          if (!$1st['status']) {
              $1st['status'] = 'No';
              unset($2ndArray[array_search($1st['username'], $1st)]);
          }
      }
      
      // Finally, we sanitize the 2ndArray indexes
      $2ndArray = array_values($2ndArray);
      

      【讨论】:

      • 您好,请检查您的代码,错误使用array_search
      • 当然,你是对的@NineCattoRules。 array_search 需要两个参数,haystackneedle。已经更正了:)
      猜你喜欢
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多