2012-08-17 147 views
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"; 
+0

你的問題很含糊......你是什麼意思?你怎麼能得到「10 - 20年」? – 2012-08-17 06:25:26

+0

@MihaiIorga,是的,''10 - 20yrs''假設我有10個'$ min'和20個'$ max'。 – 2012-08-17 06:27:46

回答

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)); 
?> 

我想你需要完全匹配

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" 
1
function searchArray($min, $max, $years_array) 
{ 
    foreach($years_array as $years) 
    { 
    if($years[1] == $min && $years[2] == $max) return $years[0]; 
    } 
} 
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爲最低和最高將return array(0 => "Desc1", 1 => "Desc2"); 如果功能不匹配反對通過最小值和最大值,它將返回一個空數組,並且很容易用empty進行檢查。

相關問題