PHP:具有3个值/键的字典的简单数据结构

时间:2016-06-07 11:52:44

标签: php dictionary data-structures

我有一个三角形列表,每个三角形都有一个id,周长和面积。

我需要实现函数,根据其中一个参数(id或周长或面积)在列表中查找三角形。

问题是如何在这种情况下存储列表?我正在寻找简单的东西,这将使这些功能变小。

我尝试使用

  //...

  var p = this._map.project(new L.LatLng(lc.lat, lc.lng), coords.z);

  //...

为每个三角形构建关联。阵列。但是现在一个人根据区域或周边很容易找到三角形(必须使用foreach,in_array是不够的)。

有一种简单的方法吗?

2 个答案:

答案 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);
}
}