我有一个像这样的二维二维阵列。它们是动态创建的,因此它们可以包含不同数量的数组。
$userInput['shops'] = Array
(
[0] => Array
(
[id] => 9
)
)
和另一个看起来像这样:
$userShops = Array
(
[0] => Array
(
[id] => 9
)
[1] => Array
(
[id] => 10
)
)
第一个阵列是我从选定商店的帖子,ids收到的东西。第二个数组显示用户拥有的所有商店ID。如何测试userInput中的所有值是否都可以在数组userShops中找到?我使用它进行验证,所以我需要查看post中的所有值是否与用户的实际值匹配。
我试图这样做,但我收到了oknot结果,所以我认为这应该构造不同,也许以某种方式计算匹配...你应该忽略我的代码因为我认为这是不好的方法...总之,我需要检查是否可以在第二个数组中找到第一个数组中的所有值,如果不是显示错误。
if(isset($userInput['shops']) && is_array($userInput['shops'])){
foreach($userInput['shops'] as $input){
foreach($userShops as $userShop){
if(in_array($input, $userShop)){
print_r('ok');
}
else {
print_r('not'); or show validation error
}
}
}
exit;
}
答案 0 :(得分:1)
这样的事情怎么样:
function flatten(array $data) {
return array_map(function(array $element) {
return $element['id'];
}, $data);
}
$user = flatten($userInput['shops']);
$shops = flatten($userShops);
$isCovered = empty(array_diff($user, $shops));