1

我被要求/告诉我将 foxpro 函数转换为 PHP,但是我对 foxpro 一无所知。

PARAMETERS cCkey
LOCAL cKey
cKey = SUBSTR(SYS(2015),2)+PADL(LTRIM(STR(INT(IIF(INT(RAND()*1000000000) =   851390329,RAND(-1),RAND())*1000000),6)),6,"0")

RETURN cKey

以上是他们想要在一个系统中使用的功能,该系统正在用 php 构建以与 foxpro 数据库集成。

有些函数在 PHP 中很熟悉,但其他函数如“SYS”和“IIF”则不熟悉,因为我知道这里有人可以看一眼它,并确切地知道它在做什么。

介意帮我吗?提前致谢。

4

2 回答 2

1

Sys(2015)是一个方便的 VFP 函数,它返回该 VFP 会话的唯一值。你可以在这里阅读

Iif是内联 if-else-endif 语句 .. 就像 Excel 一样

更新

SYS(2015) 在 PHP 中?我不知道.. 但是如果我们在 PHP 中讨论随机字符串,您可以使用它

function rand_string( $length ) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  

    $size = strlen( $chars );
    for( $i = 0; $i < $length; $i++ ) {
        $str .= $chars[ rand( 0, $size - 1 ) ];
    }

    return $str;
}

我从这个链接得到了这个,并从这个链接得到了基本的想法

关于另一部分可能是这样的:

$randomresult = 0
$srandom = ""

If (INT(RAND()*1000000000) =   851390329)
{
    $randomresult = int(rand(-1)) * 1000000
}
else
{
    $randomresult = int(rand()) * 1000000
}

$srandom=str_pad(ltrim(strval($randomresult),"0")),6,"0",STR_PAD_LEFT)

所以,也许我们可以在 PHP 中制作这样的 foxpro 代码:

$cKey = rand_string(10) . str_pad(ltrim(strval($randomresult),"0")),6,"0",STR_PAD_LEFT)

至少你可以的想法......

于 2013-05-25T06:06:01.677 回答
0

SYS(2015)返回一个唯一的 10 个字符的过程名称,该名称以下划线开头,后跟字母和数字的组合。

http://msdn.microsoft.com/en-us/library/684by7c1(v=vs.80).aspx

IIF根据逻辑表达式的值返回两个值之一。

http://msdn.microsoft.com/en-us/library/7ttt15k6(v=vs.80).aspx

有了这些信息,我认为您至少可以尝试创建一个 PHP 函数,然后展示一些 PHP 并在需要时寻求帮助。

于 2013-05-25T06:07:44.403 回答