如何检查或声明数组的数组值,如 instanceof a Class/Entity

how to check or declare array values of an array like an instanceof a Class/Entity

在我的 symfony 项目中,我有一个数组 $productContainer,其中包含一些值,例如 (php dump):

array:2 [▼
  0 => "value1"
  1 => "value2"
]

我在我的控制器中通过 findBy 方法在 Product 实体中传递此数组,如下所示:

$products = $this->getDoctrine()->getRepository('MyBundle:Product')
                                ->findByValue($productContainer);

findBy 方法和数组值之间的结果非常匹配。

但是当我检查数组是否是我的class[=53的一个实例时=] Product 像这样:

dump($products instanceof Product);
die;

它回复我:false

我知道 $products 是一个 array 而不是 object,但是我如何声明我的数组 $products 作为 instanceof Product 实体 ?

编辑

为了更精确,我需要声明或检查数组 $products 的值是否为 instanceof Product 因为在同一个控制器中,我必须传递数组$products in a queryBuilder for another entity like this:

$entity = $this->getDoctrine()->getRepository('MyBundle:Entity')
                              ->getEntityWithProducts($slug, $products);

我通过 $_POST 方法恢复数组 $products (Request $request) 它是我重新调入 JsonResponse 的控制器方法,这就是我以这种方式进行的原因。

如果您只需要一种产品,请尝试 findOneByValue 而不是 findByValue
或者 从您收到的数组中提取一些元素, 因为您在调用 findByValue 后收到实体数组。
或者 遍历接收到的数组中的所有元素以检查它们。
或者 也许在您的产品存储库中存在为您做一些工作的方法 findByValue

但是无论如何,在returns 适合您的 class 实例之后检查教义听起来很奇怪...
如果您使用 getArrayResult 之类的东西,您将收到数组,否则您将收到适当实体的实例。

数组不能是某个对象class,但如果我明白你想做什么,也许你可以尝试使用数组函数。

试试这个

$test = array_reduce(
          $products, 
          function ($condition, $item) {
            return $condition && $item instanceof Product;
          }, 
          true
        );
// $test will be true if all elements of $products are instances 
// of 'Product', false otherwise