在 php 中排列数组中的单词
Arrange words in array in php
根据第一个数组的位置重新排列数组中的单词。在我的代码中有两个数组,我的第一个数组是基础数组,我将从中将它与第二个数组进行比较,并使位置与第一个数组相同。
考虑2个输入
通过将 1 个输入作为基础,我正在应用 levenshtein(metaphone(每个单词数据库),metaphone(银行的每个单词))然后基于此在新数组中排列 bankdata 的单词
数据库名称 = LAL BAHADUR SHASTRI
银行数据 = SHASTRI LAL
源代码只会重新排列 bankdata 并存储在新数组中
bankdata 的当前输出:LAL SHASTRI
重新排列正常只需要排列数组中的单词
$db = 'LAL BAHADUR SHASTRI YADAV';
$bank = 'SHASTRI LAL';
$a = reArrangeArray($db,$bank);
function reArrangeArray($db,$bank)
{
$dataBaseName = $db;
$bankdataRows = [$db,$bank,];
$dbWords = preg_split("#[\s]+#", $dataBaseName);
foreach ($bankdataRows as $bankdata)
{
$bankWords = preg_split("#[\s]+#", trim($bankdata));
$result = [];
if(!empty($bankWords))
foreach ($dbWords as $dbWord)
{
$idx = null;
$least = PHP_INT_MAX;
foreach ($bankWords as $k => $bankWord)
if (($lv = levenshtein(metaphone($bankWord),metaphone($dbWord))) < $least)
{
$least = $lv;
$idx = $k;
}
@$result[] = $bankWords[$idx];
unset($bankWords[$idx]);
}
$result = array_merge($result, $bankWords);
var_dump($result);
}
}
案例一:
当前输出
array (size=4)
0 => string 'LAL' (length=3)
1 => string 'BAHADUR' (length=7)
2 => string 'SHASTRI' (length=7)
3 => string 'YADAV' (length=5)
array (size=4)
0 => string 'LAL' (length=3)
1 => string 'SHASTRI' (length=7)
2 => null
3 => null
预期输出
我需要与 databaseArray 相同的数组位置
$dbName = 'LAL BAHADUR SHASTRI YADAV';
$bankName = 'SHASTRI LAL';
array of db (size=4)
0 => string 'LAL' (length=3)
1 => string 'BAHADUR' (length=7)
2 => string 'SHASTRI' (length=7)
3 => string 'YADAV' (length=5)
array of bankname (size=4)
0 => string 'LAL' (length=3)
1 => #
2 => string 'SHASTRI' (length=7)
3 => ###
如果在第一个数组中找不到单词,则应将其放在#中,因为位置为 3,没有匹配的元素,它有 3 #
案例二
输入:
$dbName = NikithaRani MohanRao
$bankdata = Nikitha Rani Mohan Rao
输出:
$newbankdata = NikithaRani MohanRao
如果在 $dbName
中发现连接单词,则应该连接单词
<?php
$DatabaseName = "LAL BAHADUR SHASTRI YADAV";
$BankName = "SHASTRI LAL";
$data = explode(" ", $DatabaseName);
$bank = explode(" ", $BankName);
sort($data);
sort($bank);
if($data == $bank){
echo "true";
exit;
}
$lev = 0;
foreach($data as $key => $name){
$lev += levenshtein($name, $bank[$key]);
}
echo PHP_EOL . $lev;
?>
根据第一个数组的位置重新排列数组中的单词。在我的代码中有两个数组,我的第一个数组是基础数组,我将从中将它与第二个数组进行比较,并使位置与第一个数组相同。
考虑2个输入 通过将 1 个输入作为基础,我正在应用 levenshtein(metaphone(每个单词数据库),metaphone(银行的每个单词))然后基于此在新数组中排列 bankdata 的单词
数据库名称 = LAL BAHADUR SHASTRI 银行数据 = SHASTRI LAL 源代码只会重新排列 bankdata 并存储在新数组中 bankdata 的当前输出:LAL SHASTRI
重新排列正常只需要排列数组中的单词
$db = 'LAL BAHADUR SHASTRI YADAV';
$bank = 'SHASTRI LAL';
$a = reArrangeArray($db,$bank);
function reArrangeArray($db,$bank)
{
$dataBaseName = $db;
$bankdataRows = [$db,$bank,];
$dbWords = preg_split("#[\s]+#", $dataBaseName);
foreach ($bankdataRows as $bankdata)
{
$bankWords = preg_split("#[\s]+#", trim($bankdata));
$result = [];
if(!empty($bankWords))
foreach ($dbWords as $dbWord)
{
$idx = null;
$least = PHP_INT_MAX;
foreach ($bankWords as $k => $bankWord)
if (($lv = levenshtein(metaphone($bankWord),metaphone($dbWord))) < $least)
{
$least = $lv;
$idx = $k;
}
@$result[] = $bankWords[$idx];
unset($bankWords[$idx]);
}
$result = array_merge($result, $bankWords);
var_dump($result);
}
}
案例一: 当前输出
array (size=4)
0 => string 'LAL' (length=3)
1 => string 'BAHADUR' (length=7)
2 => string 'SHASTRI' (length=7)
3 => string 'YADAV' (length=5)
array (size=4)
0 => string 'LAL' (length=3)
1 => string 'SHASTRI' (length=7)
2 => null
3 => null
预期输出
我需要与 databaseArray 相同的数组位置
$dbName = 'LAL BAHADUR SHASTRI YADAV';
$bankName = 'SHASTRI LAL';
array of db (size=4)
0 => string 'LAL' (length=3)
1 => string 'BAHADUR' (length=7)
2 => string 'SHASTRI' (length=7)
3 => string 'YADAV' (length=5)
array of bankname (size=4)
0 => string 'LAL' (length=3)
1 => #
2 => string 'SHASTRI' (length=7)
3 => ###
如果在第一个数组中找不到单词,则应将其放在#中,因为位置为 3,没有匹配的元素,它有 3 #
案例二
输入:
$dbName = NikithaRani MohanRao $bankdata = Nikitha Rani Mohan Rao
输出: $newbankdata = NikithaRani MohanRao
如果在 $dbName
中发现连接单词,则应该连接单词 <?php
$DatabaseName = "LAL BAHADUR SHASTRI YADAV";
$BankName = "SHASTRI LAL";
$data = explode(" ", $DatabaseName);
$bank = explode(" ", $BankName);
sort($data);
sort($bank);
if($data == $bank){
echo "true";
exit;
}
$lev = 0;
foreach($data as $key => $name){
$lev += levenshtein($name, $bank[$key]);
}
echo PHP_EOL . $lev;
?>