1

(a)説明、(b)最小年数、(c)最大年数で構成される多次元配列があります。

$years_array = array( 
 array("Any", 0, 255),
 array("New", 0, 1),
 array("5 - 10yrs", 5, 10),
 array("10 - 20yrs", 10, 20)
);

最小年数$minと最大$max年数の両方が与えられた場合$description、配列内の説明を与えるためにそれをどのように一致させるのですか?

例:

$min = 5, $max = 10 => $description = "5 - 10yrs";
4

4 に答える 4

1

次のようなものを試してください。

function getDescription($min,$max) 
{
  // source
  $years_array = array( 
    array("Any", 0, 255),
    array("New", 0, 1),
    array("5 - 10yrs", 5, 10),
    array("10 - 20yrs", 10, 20)
  );
  foreach ($years_array as $yearRecord) {
    if ($min == $yearRecord[1] && $max == $yearRecord[2])) {
      return $yearRecord[0];
    }
  }
  return false;
}

getDescription(0, 255); // == "Any"
于 2012-08-17T06:30:44.153 に答える
1
function searchArray($min, $max, $years_array)
{
  foreach($years_array as $years)
  {
    if($years[1] == $min && $years[2] == $max) return $years[0];
  }
}
于 2012-08-17T06:30:56.077 に答える
1

素早く、汚く、可能性を示すためだけに...

<?php
$years_array = array( 
 array("Any", 0, 255),
 array("New", 0, 1),
 array("5 - 10yrs", 5, 10),
 array("10 - 20yrs", 10, 20)
);

function getYearDescription(&$years, $min, $max) {
 foreach($years as $year) {
  if($year[1] == $min && $year[2] == $max) {
    return $year[0];
  }
 }

 return "n/a";
}

echo(getYearDescription($years_array, 5, 10));
?>

完全に一致する必要があると思います

于 2012-08-17T06:31:06.420 に答える
1
function match_desc($arr,$min,$max) { 
    // first filter an array to match $min and $max
    $filtered = array_filter($arr, function($v) use ($min,$max) { 
        list($desc,$miny,$maxy) = $v; 
        return $min == $miny && $max == $maxy; 
    });
    // return only descriptions
    return array_map(function($v) { return $v[0]; },$filtered);
}

match_desc(array( 
 array("Any", 0, 255),
 array("New", 0, 1),
 array("5 - 10yrs", 5, 10),
 array("10 - 20yrs", 10, 20)
), 0,1);

戻りますarray(0 => "New");

この関数は、次のような配列がある可能性があると見なします

$years_array = array( 
 array("Desc1", 0, 255),
 array("Desc2", 0, 255),
);

したがって、0と255をminとmaxとしてフィードするとreturn array(0 => "Desc1", 1 => "Desc2"); 、関数が渡されたminとmaxと一致しない場合、空の配列が返され、。で簡単に確認できますempty

于 2012-08-17T06:33:10.743 に答える