在用foreach循环迭代的php数组中,重复值的位置相同


Same position for duplicate values in a php array iterated with foreach loop

我有以下代码,它返回一个值的索引位置,该值的键与函数参数($haystack)中提供的值匹配。

 $results = array("098"=>90,"099"=>89,"100"=>77,"101"=>77);
function getPosition($results,$StudentID){
    arsort($results);
    $index = 1;
    $exists = '';
    $keys = array_keys($results);
    foreach($keys as $key)
    {
        if($key == $StudentID)
        {
        $score = $results[$key];
        $position = $index;
        }
        $index++;
    }
  return $position;
}
echo getPosition($results,"098").'<br />';
echo getPosition($results,"099").'<br />';
echo getPosition($results,"100").'<br />';
echo getPosition($results,"101").'<br />';

结果如下所示:

  • 90=1
  • 89=2
  • 77=4
  • 77=3

现在我的问题是:1.我不知道如何让函数返回两个相似值的相同位置(例如77);

edit:函数中的StudentID参数是数组值的键。例如098是数组中的一个键,它是特定StudentID 的值

Simple以数组形式返回位置。

$results = array("098"=>90,"099"=>89,"100"=>77,"101"=>77);
function getPosition($results,$StudentID)
{
arsort($results);
$index = 1;
$exists = '';
$keys = array_keys($results);
$position = array();
foreach($keys as $key)
{
    if($key == $StudentID)
    {
    $score = $results[$key];
    $position[] = $index;
    }
    $index++;
}
return $position;
}
print_r(getPosition($results,"77"));

应该搜索值而不是键吗?

$results = array("098"=>90,"099"=>89,"100"=>77,"101"=>77);
function getPosition($results, $StudentID) {
  $index = 1;
  $indexes = array();
  foreach ($results as $key=>$value) {
    if ($value == $StudentID) $results[] = $index;
    $index++;
  }
  return $indexes;
}
print_r(getPosition($results, "77"));