我有多个阵列。我想比较这些数组键值,并只输出一个值高于其他值的数组。这是我的数组
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
答案 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'];