Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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
Javascript Can';t从PHP类函数中获取返回值_Javascript_Php - Fatal编程技术网

Javascript Can';t从PHP类函数中获取返回值

Javascript Can';t从PHP类函数中获取返回值,javascript,php,Javascript,Php,我使用一个在线转换器将Javascript*转换成PHP。代码是有效的,但我不知道如何使函数$mugenzaru->doIt返回变量$resultString。有什么想法吗 阿帕尼斯酒店Ⅼ快速发电机 原始Javascript: 生成并稍微调整了PHP:将所有字符串附件从+=更改为=在“等效”PHP函数的工作方式上存在差异,因此存在问题,特别是pickOne()计算Math.random()的工作原理与random()的工作原理不同,因此数字相差很远。看看这能不能让你更靠近。注意,日语字符使S

我使用一个在线转换器将Javascript*转换成PHP。代码是有效的,但我不知道如何使函数$mugenzaru->doIt返回变量$resultString。有什么想法吗

  • 阿帕尼斯酒店Ⅼ快速发电机
原始Javascript:


生成并稍微调整了PHP:

将所有字符串附件从
+=
更改为
=

在“等效”PHP函数的工作方式上存在差异,因此存在问题,特别是
pickOne()
计算
Math.random()
的工作原理与
random()
的工作原理不同,因此数字相差很远。看看这能不能让你更靠近。注意,日语字符使SO认为它是垃圾邮件,所以我省略了这些字符,但它们确实需要在这些数组中填充:

class   Characters
    {   
        private $mugenzaru;

        public  function getString(Mugenzaru $mugenzaru,$charType = 'kangi')
            {
                $this->mugenzaru    =   $mugenzaru;
                $kanji              =   array(2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 3, 4);
                $hiragana           =   array(1, 1, 1, 1, 2, 2, 2, 3, 3, 4);
                $katakana           =   array(2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7);
                $punctuation        =   array(1);
                $lengthWeighting    =   ${$charType};
                $charStringLength   =   $this->mugenzaru->eenieMeenie()->pickOne($lengthWeighting);
                $resultString       =   "";
                while ($charStringLength != 0) {
                    $resultString .= $this->mugenzaru->eenieMeenie()->pickOne($this->mugenzaru->{$charType}());
                    $charStringLength--;
                }
                return $resultString;
            }
    }

class   EenieMeenie 
    {
        public  function pickOne($characterList)
            {
                $rand   =   "0.".str_pad(mt_rand(1,9999999999999999),16,0,STR_PAD_LEFT);
                $var    =   floor($rand*count($characterList));
                return $characterList[$var];
            }
    }

class Mugenzaru
    {
        private $length =   10;

        public function eenieMeenie()
            {
                return new EenieMeenie();
            }

        public  function __call($name, $args = false)
            {
                $kanji      =   array(/*** array of kanji ***/);
                $hiragana   =   array(/*** array of hiragana ***/);
                $katakana   =   array(/*** array of katakana ***/);
                $punctuation    =   array(/*** array of punctuation ***/);

                return ${$name};
            }

        public  function setLength($num = 1000)
            {
                $this->length   =   $num;
                return $this;
            }

        public  function doIt(Characters $char) {
                $weighting = array(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 4, 4);
                $resultString = "";
                $targetLength = $this->length;

                while(strlen($resultString) < $targetLength) {
                    $charWeight =   $this->eenieMeenie()->pickOne($weighting);
                    switch ($charWeight){
                        case 1:
                            $resultString .= $char->getString($this,'kanji');
                            break;
                        case 2:
                            $resultString .= $char->getString($this,'hiragana');
                            break;
                        case 3:
                            $resultString .= $char->getString($this,'katakana');
                            break;
                        case 4:
                            $resultString .= $char->getString($this,'punctuation');
                            break;
                        default:
                            $resultString .= $char->getString($this,'kanji');
                    }
                }

                return $resultString;
            }
    }


$Mugenzaru  =    new Mugenzaru();
echo $Mugenzaru->setLength(1000)->doIt(new Characters);
类字符
{   
私人$mugenzaru;
公共函数getString(Mugenzaru$Mugenzaru$ChartType='kangi')
{
$this->mugenzaru=$mugenzaru;
$kanji=数组(2,2,2,2,2,1,1,1,3,4);
$hiragana=数组(1,1,1,1,2,2,3,3,4);
$katakana=数组(2,2,3,3,3,4,4,4,4,5,5,6,6,7);
$标点符号=数组(1);
$lengthWeighting=${$charType};
$charStringLength=$this->mugenzaru->eenieMeenie()->pickOne($lengthWeighting);
$resultString=“”;
而($charStringLength!=0){
$resultString.=$this->mugenzaru->eenieMeenie()->pickOne($this->mugenzaru->{$charType}());
$charStringLength--;
}
返回$resultString;
}
}
伊涅米尼班
{
公共函数pickOne($characterList)
{
$rand=“0.”.str_pad(mt_rand(199999999999999),16,0,str_pad_左);
$var=floor($rand*count($characterList));
返回$characterList[$var];
}
}
Mugenzaru类
{
私人$length=10;
公共职能部门
{
返回新的EenieMeenie();
}
公共函数调用($name,$args=false)
{
$kanji=数组(/***汉字数组***/);
$hiragana=数组(/***平假名的数组***/);
$katakana=数组(/***片假名数组***/);
$标点符号=数组(/***标点符号数组***/);
返回${$name};
}
公共函数setLength($num=1000)
{
$this->length=$num;
退还$this;
}
公共函数doIt(字符$char){
$weighting=数组(1,1,1,1,2,2,2,2,3,4,4);
$resultString=“”;
$targetLength=$this->length;
while(strlen($resultString)<$targetLength){
$charWeight=$this->eenieMeenie()->pickOne($weighting);
交换机($charWeight){
案例1:
$resultString.=$char->getString($this,'kanji');
打破
案例2:
$resultString.=$char->getString($this,'hiragana');
打破
案例3:
$resultString.=$char->getString($this,'katakana');
打破
案例4:
$resultString.=$char->getString($this,'标点符号');
打破
违约:
$resultString.=$char->getString($this,'kanji');
}
}
返回$resultString;
}
}
$Mugenzaru=新的Mugenzaru();
echo$Mugenzaru->setLength(1000)->doIt(新字符);

注意:必须发布代码并将其包含在您的问题中。我认为如果您将函数移动到类中,您将获得更大的成功。@Ghost根据Rasclatt的说法,似乎我无法包含代码bc,因为它包含触发垃圾邮件警报的日文字符。谢谢,是的,我现在就这么做了。无论如何,例如,
code
“echo$mugenzaru->doIt;”
code
抛出一个错误:“PHP可捕获致命错误:类闭包的对象无法转换为字符串”我不太确定,但也许您可以将这一行“echo$mugenzaru->doIt;”更改为“echo$mugenzaru->doIt()”,我尝试过了,结果:
PHP致命错误:调用未定义的方法Object::doIt()
一见钟情,非常感谢!!这个脚本在JS原始版本中似乎有一些小问题(例如重复出现的标点符号),但我会解决这些问题。是的,我认为这是因为标点符号数组的计算。我使它等于
数组(1)但这可能是不对的。