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

时间:2015-03-31 11:24:43

标签: php arrays

我有以下代码返回一个值的索引位置,该值的键与函数参数($ 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的值

2 个答案:

答案 0 :(得分:0)

简单地将位置作为数组返回。

$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"));

答案 1 :(得分:0)

您是否应该搜索值而不是键?

$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"));