从二维数组得到短路结果

时间:2014-07-06 15:15:47

标签: php arrays

我有2-d对象数组。我希望从数组中获得最高$prob[$i]->value的前5个值。

$prob[$i] = new stdClass();
while ($row1 = @mysqli_fetch_array($selectTag))
{
    $prob[$i]->value = ($pos_Count + 1)/ ($totalPOS_count + $distinct_pos_Count);
    $prob[$i]->tag = $row1['tag'];
}

arsort($prob);
var_dump($prob);

此代码仅提供1个结果。

如何在$prob[$i]->value的desc中获得前5个值?

1 个答案:

答案 0 :(得分:0)

请尝试以下操作:

while ($row1 = @mysqli_fetch_array($selectTag)) {
    $prob[] = (object) array(
        "value" => ($pos_Count + 1)/ ($totalPOS_count + $distinct_pos_Count),
        "tag"   => $row1['tag'],
    );
}

uasort($prob, function($a, $b) { return strcmp($a->value, $b->value) } );

var_dump(array_slice($prob, 0, 5));

我在您的代码中添加了一些内容:

  • 正确推送到您的阵列。为此,如果您设法在一个命令中添加所有成员,则根本不需要$i。我使用简单的技巧创建临时数组并将其转换为动态对象。
  • 使用uasort定义您的排序功能。
  • 仅使用array_slice从排序数组中获取前5个元素。