Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL自定义函数是否可以使用数组和排序?_Php_Mysql_User Defined Functions - Fatal编程技术网

Php MySQL自定义函数是否可以使用数组和排序?

Php MySQL自定义函数是否可以使用数组和排序?,php,mysql,user-defined-functions,Php,Mysql,User Defined Functions,虽然我似乎无法得到关于上一个问题的满意答案,但我现在希望在一个简单的localhost环境中使用MySQL而不是SQLite作为数据库背景来完成我的项目。我需要完成的一件事是使用用户定义函数(UDF),PHP可以在更新查询中使用以下代码很好地处理SQLite: function nPoints($n1, $n2, $n3, $n4) { $numb = array($n1, $n2, $n3, $n4); sort($numb); return $numb[0] * 1

虽然我似乎无法得到关于上一个问题的满意答案,但我现在希望在一个简单的localhost环境中使用MySQL而不是SQLite作为数据库背景来完成我的项目。我需要完成的一件事是使用用户定义函数(UDF),PHP可以在更新查询中使用以下代码很好地处理SQLite:

function nPoints($n1, $n2, $n3, $n4)
{
    $numb = array($n1, $n2, $n3, $n4);
    sort($numb);
    return $numb[0] * 1 + $numb[1] * 2 + $numb[2] * 3 + $numb[3] * 4;
}
基本上,我取4个数字,然后做一个计算,将最小的数字乘以1,然后最小的一个乘以2,最小的第三个乘以3,然后最大的乘以4,不管是否有联系。作为MySQL用户定义的函数,我可以这样做吗?如果不能,那么不使用更复杂的方法(例如用于下一个循环的快速排序逻辑)的最干净的方法是什么

如果PHP能够像在SQLite中一样注册这样的用户定义函数,那实际上会更好,但是如何注册呢?

为什么要使用sort()?只要写一个快速排序算法,它只有4个数字。 或者,您可以在PHP中执行此操作(我假设您正在将PHP连接到MYSQL)

没有理由不

从表中选择*;
//计算
更新表格集合x=y,其中有内容

暴力可以是:

$max=$N1+$N2*2+$N3*3+N4*4;
如果($max<$N1+$N2*2+$N4*3+N3*4),则
$max=$N1+$N2*2+$N4*3+N3*4
如果结束
...
...
...

返回$max

我会选择Eugene Lorman提供的PHP解决方案,从长远来看,它更容易维护。很抱歉,我在这里迷路了。1.因此,在MySQL函数中,我不能使用数组和排序函数来简化我需要完成的任务,也不能使用旧方法来完成任务?2.我可以像最初那样使用PHP来实现所需的MySQL功能吗?如果是这样的话,那怎么办呢?我想作为最后的手段,我可以遵循[这个例子]()。