如何确保数组$b中的所有子数组都是$a的,尽管有数字键(0,1,2...等)。
$a = [
0 => ['v' => 1, 'f' => 2],
1 => ['v' => 144, 'f' => 443]
];
$b = [
0 => ['v' => 1, 'f' => 2],
1 => ['v' => 25, 'f' => 3],
2 => ['v' => 144, 'f' => 443]
];
我的方法是在foreach里面加上foreach和多个if......很快就变得一团糟。
有 array_diff()
不幸的是,这只适用于一维。 但你可以 json_encode()
数组中的每个元素,然后比较... ...
$c = array_diff(array_map("json_encode", $a), array_map("json_encode", $b));
print_r($c);
与你的原始数据,因为它们都在第二个数组中,这就... ...
Array
(
)
把443改成4431
$a = [
0 => ['v' => 1, 'f' => 2],
1 => ['v' => 144, 'f' => 4431]
];
然后你会得到...
Array
(
[1] => {"v":144,"f":4431}
)
密钥将与原始数据相同,但数据是JSON编码的(如果这真的很重要的话)。
在这种情况下,你可以使用交集。
$a = [
0 => ['v' => 1, 'f' => 2],
1 => ['v' => 144, 'f' => 443]
];
$b = [
0 => ['v' => 1, 'f' => 2],
1 => ['v' => 25, 'f' => 3],
2 => ['v' => 144, 'f' => 443]
];
$result = array_intersect($a, $b);
if($result == $a){
echo '$b has all the value in $a';
}