php - 如何在 PHP 中以矩阵形式映射 JSON 对象数组?
问题描述
这是我在 PHP中的JSON数据集格式:
$product_arr =
{
"Samiya J.": [
{
"SparePartID": "45",
"Name": "Lights",
"Rating": "5",
"CustomerID": "5",
"FirstName": "Samiya J."
},
{
"SparePartID": "49",
"Name": "Tool Kit",
"Rating": "4",
"CustomerID": "5",
"FirstName": "Samiya J."
},
{
"SparePartID": "52",
"Name": "Side Mirrors",
"Rating": "5",
"CustomerID": "5",
"FirstName": "Samiya J."
},
{
"SparePartID": "52",
"Name": "Side Mirrors",
"Rating": "4",
"CustomerID": "5",
"FirstName": "Samiya J."
},
{
"SparePartID": "45",
"Name": "Lights",
"Rating": "4",
"CustomerID": "5",
"FirstName": "Samiya J."
}
],
"Ammarah Niazi": [
{
"SparePartID": "45",
"Name": "Lights",
"Rating": "4",
"CustomerID": "13",
"FirstName": "Ammarah Niazi"
},
{
"SparePartID": "47",
"Name": "Steering Wheel",
"Rating": "4",
"CustomerID": "13",
"FirstName": "Ammarah Niazi"
}
]
}
这些数据是根据人名分组的。现在我试图通过发送一个人名并计算他与上述矩阵数据中所有其他人的距离来映射这个数据矩阵。
我使用了以下方法,但它让我出错:
public function getRecommendations($matrix, $person)
{
foreach ( $matrix as $otherPerson => $value)
{
if($otherPerson!= $person)
{
$sim = similarity_distance($matrix, $person, $otherPerson);
var_dump($sim);
return $sim;
}
}
}
public function similarity_distance($matrix, $person1, $person2)
{
$similar = array();
$sum = 0;
foreach( $matrix[$person1] as $key => $value)
{
if (array_key_exists($key, $matrix[$person2]))
{
$similar[$key] = 1;
}
}
if($similar == 0)
{
return 0;
}
foreach( $matrix[$person1] as $key => $value)
{
if (array_key_exists($key, $matrix[$person2]))
{
$sum = $sum + pow($value - $matrix[$person2][$key],2);
}
}
return 1/(1 + sqrt($sum));
}
并将上面的函数称为
getRecommendations($products_arr, 'Ammarah Niazi');
我得到的错误是:未捕获的错误:调用未定义的函数similarity_distance()
谁能告诉我我是否为上述功能发送了正确的格式数据,或者我做错了什么。我真的很困惑。
解决方案
推荐阅读
- plot - 顶部 theta 顺时针方向的 Gnuplot 极坐标图将内部径向网格原点保持在 0 角
- javascript - 从辅助窗口调用 Flex 应用程序公开的 JS 方法
- ios - viewWillAppear 中添加的 NSNotification Observer 在 iOS 13 中执行了两次
- excel - 比较 Excel 中的两列并插入新行
- android - Android中称为向下箭头按钮的事件是什么?
- python - Python正则表达式删除某些模式之间的文本
- wso2 - 当 saml 响应具有 RequestDenied 断言时,具有 ADFS 联合的 WSO2 Identity Server 5.7.0 无法显示错误页面
- arcgis - 是否可以在 ArcMap 中创建动态叠加格网?
- javascript - 判断一个节点是否包含ap标签的简单方法
- c++ - 通过 apache 箭头读取 csv 的官方示例的 Coredump?