继续这种情况我在我的数据库中有一个条目,其字段值如下所示
在前端我得到一个类似64 | 65 | 72 | 0 | 0 | 0 | 0 |的字符串(请参阅条目类似于1字段但重新排列)。根据用户输入的选项(请注意字符串长度将保持不变)。
是否可以将用户字段与数据库字段等同,以便从匹配字段的数据库中获取数据
答案 0 :(得分:2)
如果你爆炸了这个字符串,你就会有一个可以排序的数组。
但除非数据库中的数据也已排序,否则没有用。
e.g。 $my_array = explode("|", trim($str, "|") );
答案 1 :(得分:0)
function rearrange($string)
{
$temp = explode("|", $string);
// $temp is now an array. sort it however you want and store it back in $temp
return implode("|", $temp);
}
答案 2 :(得分:0)
我不确定重新排序规则是什么,但让我们以ABCDEFG形式说明解决方案 - > ABDECFG。
您可以在将数据发送回服务器之前在Javascript中重新排序数据,或者在将数据发送到MySQL之前在服务器上重新排序。由于你的问题是在PHP / MySQL下提交的,我假设你想要执行后者。
请注意,这不是最优雅的解决方案,但它确实清楚地说明了这种方法。一旦理解了基本想法,你就可以对它进行改进:
// Assume $Unsorted = '64|65|0|0|72|0|0|'
$Segments = explode('|', $Unsorted);
if (count($Segments) != 7)
{
// Handle the error case
}
$Sorted = sprintf
(
'%u|%u|%u|%u|%u|%u|%u|',
$Unsorted[0],
$Unsorted[1],
$Unsorted[3],
$Unsorted[4],
$Unsorted[2],
$Unsorted[5],
$Unsorted[6]
);
// Now, $Sorted = '64|65|0|0|72|0|0|'
答案 3 :(得分:0)
我会像其他人一样说: 将您的字符串拆分为数组,然后进行比较
$myInput = explode('|', $strInput);
$similar = (true === empty(array_diff($myInput, $data))
&& true === empty(array_diff($data, $myInput)));
更正(空只接受变量)
$myInput = explode('|', $strInput);
$diff1 = array_diff($myInput, $data);
$diff2 = array_diff($data, $myInput);
$similar = (true === empty($diff1)
&& true === empty($diff2));
答案 4 :(得分:0)
按管道拆分输入和数据库字符串,并在比较结果数组之前对它们进行排序:
$arr1 = explode('|', '64|65|0|0|72|0|0|');
$arr2 = explode('|', '64|65|72|0|0|0|0|');
sort($arr1);
sort($arr2);
if ($arr1 === $arr2)
echo "Matched\n";
else
echo "Not Matched\n";