如何检查或声明数组的数组值,如 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
在我的 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