我正在尝试使用PHP构建搜索功能。当我们给出一个输入字符串时,它应该根据给定的输入对结果数组值进行排序。应该首先列出具有最匹配结果的数组 当我尝试排序时,结果根据字母顺序排列。如果有人可以帮助我会很好 这是我的阵列,
$sourceArray = array( Array
(
'name' => 'MODERN FAMILY SPINOFF AKA CORRIGAN, PAUL & BRAD WALSH PROJECT',
'status' => 'D',
'season' => '2014-2015',
),
Array
(
'name' => 'E! ENTERTAINMENT SPECIAL: MODERN FAMILY',
'status' => 'D',
'season' => '2014-2015',
),
Array
(
'name' => 'MODERN FAMILY AKA MY AMERICAN FAMILY AKA LEVITAN, STEVEN & LLOYD, CHRIS PROJECT',
'status' => 'D',
'season' => '2009-2010'
),
Array
(
'name' => 'MODERN FAMILY',
'status' => 'P',
'season' => '2015-2016',
),
Array
(
'name' => 'E! ENTERTAINMENT SPECIAL: MODERN FAMILY',
'status' => 'P',
'season' => '2013-2014',
), Array
(
'name' => 'E! ENTERTAINMENT SPECIAL: MODERN FAMILY',
'status' => 'D',
'season' => '2014-2015',
));
答案 0 :(得分:0)
您可以执行以下操作来返回符合搜索条件的数组键:
$results = array_keys(array_column($sourceArray, 'name'), 'Family');
答案 1 :(得分:0)
以下代码将帮助您根据输入字符串值对多维数组进行排序。它还允许匹配精确的字符串和子字符串。在断点
中提及字符串的第二部分usort($sourceArray, 'name_sort');
print_r($sourceArray);
function name_sort($a, $b) {
global $incVal;
$incVal++;
$sampleText = "Your Text Input";
if(strcmp($a['name'],$sampleText)==0 && strcmp($b['name'],$sampleText)==0)
{
return 0;
}
else
{
if(strcmp($a['name'],$sampleText)==0)
{
return -1;
}
}
if(strpos($a['name'],$sampleText)=== false)
{
if(strpos($b['name'],$sampleText)=== false)
{
return 0;
}
else
{
$b = explode($sampleText,$b['name']);// $b['name'];
if(strpos($b[1],'Break Point')== 1)
{
return 1;
}
elseif(strpos($a[1],'Break Point')== 1)
{
return -1;
}
else
{
return 0;
}
}
}
else
{
if(strpos($b['name'],$sampleText)=== false)
{
return 0;
}
else
{
$a = explode($sampleText,$a['name']);//$a['name'];
$b = explode($sampleText,$b['name']);// $b['name'];
if(strpos($b[1],'Break Point')== 1)
{
return 1;
}
elseif(strpos($a[1],'Break Point')== 1)
{
return -1;
}
elseif(strpos($b[1],'Break Point')> 1)
{
return 1;
}
else {
return 0;
}
}
}