Php 在磁电机2中循环通过集合时创建关联数组

Php 在磁电机2中循环通过集合时创建关联数组,php,json,magento2,Php,Json,Magento2,我有一个收集对象 $di=array(); $products= $this->customerFactory->create()->getCollection()->addAttributeToSelect('*')->addFieldToFilter('entity_id','22'); foreach ($products as $key => $value) { # code... } 我想知道如何循环这个集合并创建关联数组。如果结果有多行

我有一个收集对象

$di=array();

$products= $this->customerFactory->create()->getCollection()->addAttributeToSelect('*')->addFieldToFilter('entity_id','22');

foreach ($products as $key => $value)

 { # code...  }
我想知道如何循环这个集合并创建关联数组。如果结果有多行,如何循环它

作为最终结果,我应该得到如下数组

{key=>value, key1=>value1}

首先,
getCollection()
已经返回给定集合的元素数组及其所有属性(
addAttributeToSelect('*')
),因此您已经收到一个对象数组,而不是多维数组

在最简单的情况下,如果您需要一个包含所有产品和所有属性的JSON数组,那么就可以这么简单:

$jsonArray= json_encode($products); // converts all elements into a JSON representation
如果需要关联元素数组而不是对象数组,请键入以下对象:

$assocArray= array();
foreach ($products as $product) {
  $assocArray[]= (array) $product; // type-casting to array
}
如果您想迭代每个产品的每个属性(我不知道您为什么要这样做),以下是该版本:

$assocArray= array();
foreach ($products as $product) {
  $rowArray= array();
  foreach ($product as $key => $val) {
    $rowArray[$key]= $val;
  }
  $assocArray[]= $rowArray;
}

希望这能让您了解如何在Magento中使用集合。

您希望创建一个JSON对象作为结果(即
{key1:value1,key2:value2}
),还是需要一个PHP数组?如果第二个选项合适,请从您的问题中删除JSON标记$jsonArray=json_encode($products),.foreach($products as$product)工作得非常好。我可以在项目中继续解释这个问题。但是使用键和值的循环正在返回emphty数组。但是我的问题解决了。谢谢。这个解释对magento初学者更有用