我有2个阵列:
我想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:
// 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)
正如你可以看到array = 18795 - 17238 = 1557的diff。 我想知道他们是什么。然后我尝试了这个:
$diff = array_diff( $intersect_sku_array_is , $intersect_sku_array_s );
以及dd($diff);
何时获得array (size=18795)
我无法弄明白如何打印 1557 。
有人可以解释一下这里发生了什么吗?
答案 0 :(得分:1)
你的问题已经从你的交叉呼叫开始了!那里你将失去你的真实"数组数据,因为您以小写形式比较所有内容并以小写形式分配它。
因此,您的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);
答案 1 :(得分:-1)
我不熟悉dd
作为PHP函数。
您的问题并不完全清楚,但如果您只是想查看数组$diff
的内容,有很多方法可以做到这一点......
echo "diff=<pre>".print_r($diff,true)."</pre><br />\n";
-OR -
var_dump($diff);
-OR -
foreach ($diff as $k=>$v)
echo "k=$k, v=$v<br />\n";
这是你想要做的吗?