我尝试使用以下产品数据创建优化列表:
使用Table Product,可以完美地检索所有需要的数据,从而创建一个非常类似于algolia电子商务最佳购买示例的json文件。
{
“id”: "3953367"
“name”: “360fly - Panoramic 360° HD Video Camera - Black”,
“popularity”: 9999,
“rating”: 5,
“objectID”: “9131042”
},
另一方面,表2 - >产品详细信息具有以下结构:
id - productId - name - value.
1 - 3953367 - Operating System - Android 4.4 KitKat
2 - 3953367 - Voice Activated - Yes
3 - 3953367 - Processor Speed - 1.2 gigahertz
如您所见,1个单品可以显示3个以上的方面选项。
但我不知道如何构建数据以创建这样的细化列表:
作为一个例子,我如何创建json以允许人们使用操作系统进行优化。
我尝试过类似的事情:
$record[$this->productdetails->map(function($data) {return [$data[‘name’]];})->toArray()]
=
$this->productdetails->map(function($data) {return [$data[‘value’]]; })->toArray();
但在此示例中我收到错误:
非法偏移类型
任何赞赏的例子。我正在使用Laravel Scout和Algolia。
根据用户@ daniel-h方法我更新了我的代码。
public function toSearchableArray()
{
$record['name'] = $this->productName;
$record['description'] = $this->productSpecification;
$record['brand'] = $this->productBrand;
$record['color'] = $this->color;
$new_array = [];
foreach ($this->productdetails as $record) {
$new_array[$record['name']] = $record['value'];
}
return $record;
}
目前我正在接收array_merge():参数#1不是数组
更新:
解决方案是:
// Add the product details to the array
foreach ($this->productDetails as $detailsRecord) {
$record[$detailsRecord->name] = $detailsRecord->value;
}
答案 0 :(得分:2)
我不知道你想要什么,但错误是因为你不能给数组作为$ record的索引。看起来应该更像:$ record [1]或$ record ['key']。
你在寻找类似的东西:
import sys
aList = [[None, 8.0, 1.0], [2.0, 3.0], [9.0], [5.0, None, 4.0]]
mininum = sys.maxsize
for j, ele in enumerate(aList):
cur_min = min(float(i) for i in ele if i is not None)
if cur_min < mininum:
minimum = cur_min
pos_index = ele.index(minimum)
list_index = j
print(aList[list_index][pos_index])