检查数组的所有项目是否在另一个关联数组中可用?

时间:2018-08-22 11:37:57

标签: php arrays

我有2个数组,如下所示。我想检查第一个数组$arrayA的所有项目是否在$arrayB中针对键fruit可用。我该怎么做?

<?php
$arrayA = ['apple', 'guava'];
$arrayB = [
            ['fruit' => 'apple','vegetables' => 'potato'],
            ['fruit' => 'guava','vegetables' => 'onion']
          ];

 $containsSearch = count(array_intersect($arrayA, $arrayB)) == count($arrayA);

 var_dump($containsSearch);

以上代码返回错误:

  

PHP注意:在第8行的/var/www/html/test/b.php中,数组到字符串的转换

3 个答案:

答案 0 :(得分:2)

您可能想使用array_column(),因为您只想使用MyManagedObject键。然后应该是:

fruit

答案 1 :(得分:1)

array_column()是隔离fruit元素的必要步骤。不需要count()调用,因为过滤后的$arrayA的排序与未过滤后的$arrayA相同,因此您可以进行相同的检查。

代码:(Demo

$arrayA = ['apple', 'guava'];
$arrayB = [
            ['fruit' => 'apple','vegetables' => 'potato'],
            ['fruit' => 'guava','vegetables' => 'onion']
          ];
var_export(array_intersect($arrayA, array_column($arrayB, 'fruit')) === $arrayA);

输出:

true

答案 2 :(得分:0)

public ExampleObject(String name, ExampleObject... exampleObjects) {

}


public static void main(String[] args) {
   ExampleFunction(new ExampleObject("Test", new ExampleObject("Test2")));
}