如何根据一个特定的键比较多个数组以获得更高的值?

时间:2016-12-30 13:47:35

标签: php arrays

我有多个阵列。我想比较这些数组键值,并只输出一个值高于其他值的数组。这是我的数组

array(4) { ["type"]=> string(6) "Person" ["relevance"]=> string(8) "0.645481" ["count"]=> string(1) "1" ["text"]=> string(15) "RAJESH NELATURI" }
array(4) { ["type"]=> string(6) "Person" ["relevance"]=> string(8) "0.567918" ["count"]=> string(1) "2" ["text"]=> string(11) "Layoutlands" } 
array(4) { ["type"]=> string(6) "Person" ["relevance"]=> string(8) "0.546824" ["count"]=> string(1) "1" ["text"]=> string(9) "N. Rajesh" }

我想比较关键字“相关性”并过滤具有较高相关性值的数组。在这种情况下,第一个数组的值为“0.645481”并打印数组key[text]。这里应该打印 RAJESH NELATURI

3 个答案:

答案 0 :(得分:3)

这是一个解决方案:

$higher = array('relevance' => 0);
foreach($myArray as $key) {
  if($key['relevance'] > $higher['relevance']){
      $higher = $key;    
  }
}

最后,$higher将拥有最大relevance并且等于:

$higher = array(4) { ["type"]=> string(6) "Person" ["relevance"]=> string(8) "0.645481" ["count"]=> string(1) "1" ["text"]=> string(15) "RAJESH NELATURI" }

现在您可以打印较高的text

echo  $higher['text'];

<强>更新

但是你的数组中的所有'相关'值似乎都是字符串,所以它们无法相互比较!你必须将它们改为float

尝试以另一种方式生成此数组以获得float值,

如果你不能,请尝试使用此代码:

$higher = array('relevance' => 0);
foreach($myArray as $key) {
  if((float)$key['relevance'] > (float)$higher['relevance']){
      $higher = $key;    
  }
}

此代码在比较之前将字符串更改为float。

答案 1 :(得分:0)

在更换 - 如果更高的基础上迭代数组。

$currentMax = PHP_INT_MIN; // it is impossible for any entries to be smaller than this value

foreach($arrays as $array){
    $keyValue = $array["relevance"]; // not exactly sure what you mean by "key value"
    if($keyValue > $currentMax){
        $currentMax = $keyValue;
        $currentName = $array["text"]'
    }
}

$currentName应设置为lonig,因为$arrays不为空且任何条目的$keyValue都大于PHP_INT_MIN

答案 2 :(得分:0)

找到与最大值和索引的相关性。这是代码,希望它有所帮助。

$relevances = array_column($array, 'relevance');
$values = array_values($relevances);
$map = array_combine($values, array_keys($$relevances));
echo $array[$map[max($values)]]['text'];