【问题标题】:How to find out the differences of 2 arrays?如何找出2个数组的差异?
【发布时间】:2015-04-28 00:00:38
【问题描述】:

我有 2 个数组:

  1. $valid_sku_array
  2. $qb_sku_array

我想intersect他们,并打印出bad一个(差异)

然后我这样做:

        // Case Sensitive
        $intersect_sku_array_s = array_intersect( $valid_sku_array, $qb_sku_array );

       dd($intersect_sku_array_s); ... array (size=17238) 

然后我也尝试了不区分大小写:

    // Case Insensitive
    $intersect_sku_array_is = array_intersect(array_map('strtolower', $valid_sku_array), array_map('strtolower', $qb_sku_array ));

    dd($intersect_sku_array_is); ... array (size=18795)  

如您所见,两个数组的差异 = 18795 - 17238 = 1557。 我想看看它们是什么。然后我尝试了这个:

$diff = array_diff( $intersect_sku_array_is , $intersect_sku_array_s );

dd($diff); 我什么时候收到array (size=18795)

我只是想不通如何打印出那些 1557

有人可以解释一下这里发生了什么吗?

【问题讨论】:

    标签: php arrays laravel


    【解决方案1】:

    我不熟悉 dd 作为 PHP 函数。

    您的问题并不完全清楚,但如果您只是想查看数组$diff 的内容,有很多方法可以做到...

    echo "diff=<pre>".print_r($diff,true)."</pre><br />\n";
    

    -或-

    var_dump($diff);
    

    -或-

    foreach ($diff as $k=>$v)
        echo "k=$k, v=$v<br />\n";
    

    这就是你想要做的吗?

    【讨论】:

    • 哦,等等 - 你在使用 Laravel 吗?如果是这样,请将该标签添加到您的问题中。
    • 这不是答案!
    • 是的,我确实使用过 Laravel
    【解决方案2】:

    你的问题已经从你的 intersect 调用开始了!在那里,您将丢失“真实”数组数据,因为您将所有内容都以小写形式进行比较并以小写形式进行分配。

    所以你的 array_diff 不会找到任何东西,因为它区分大小写,如果你让它不区分大小写,你仍然没有真正的数据。

    你已经必须改变你的相交。所以你的代码应该是这样的:

    $intersect_sku_array_s = array_intersect($valid_sku_array, $qb_sku_array);
    $intersect_sku_array_is = array_uintersect($valid_sku_array, $qb_sku_array, "strcasecmp");
                            //^^^^^^^^^^^^^^^^ See here I used 'array_uintersect' with 'strcasecmp', so that you don't lose your case
    

    在此之后,您可以像这样正常执行 array_diff:

    $diff = array_diff($intersect_sku_array_is, $intersect_sku_array_s);
    

    【讨论】:

    • 我知道了:array_uintersect(): at least 3 parameters are required, 2 given
    • 我应该在我的第一个参数中添加什么作为我的第三个参数?
    • @kula 我有一个小错字,只有第二个你想要不区分大小写的相交必须是 array_uintersect,所以只需再次复制代码
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2016-07-21
    • 2022-01-04
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多