我有一个三角形列表,每个三角形都有一个id,周长和面积。
我需要实现函数,根据其中一个参数(id或周长或面积)在列表中查找三角形。
问题是如何在这种情况下存储列表?我正在寻找简单的东西,这将使这些功能变小。
我尝试使用
//...
var p = this._map.project(new L.LatLng(lc.lat, lc.lng), coords.z);
//...
为每个三角形构建关联。阵列。但是现在一个人根据区域或周边很容易找到三角形(必须使用foreach,in_array是不够的)。
有一种简单的方法吗?
答案 0 :(得分:1)
假设你正在寻找面积= 2的三角形,例如,
$subset = array_reduce($triangleList, function ($carry, $item) {
if ($item['area'] == 2) {
$carry[] = $item;
}
}, array());
答案 1 :(得分:1)
我的解决方案,在类中使用三个简单数组。然后使用array_search
搜索功能:
class ListOfTriangles {
private $ids = [];
private $areas = [];
private $perimeters = [];
public function addTriangle($id,$area,$perimeter){
$ids[] = $id;
$areas[] = $area;
$perimeters[] = $perimeter;
}
public function getTriangle($index){
return [$this->ids[$index],$this->areas[$index],$this->perimeters[$index]];
}
public function searchById($id){
$index = array_search($id, $this->ids);
return $this->getTriangle($index);
}
public function searchByArea($area){
$index = array_search($area, $this->areas);
return $this->getTriangle($index);
}
public function searchByPerimiter($perimiter){
$index = array_search($perimiter, $this->perimiters);
return $this->getTriangle($index);
}
}