小编Riz*_*123的帖子

用preg_replace_callback替换preg_replace()e修饰符

我对正则表达式很糟糕.我试图取代这个:

public static function camelize($word) {
   return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\\2")', $word);
}
Run Code Online (Sandbox Code Playgroud)

使用带有匿名函数的preg_replace_callback.我不明白\\ 2是做什么的.或者就此而言preg_replace_callback的工作原理.

实现这一目标的正确代码是什么?

php regex preg-replace preg-replace-callback

82
推荐指数
1
解决办法
10万
查看次数

分配多个变量是正确的a = b = c = d = 5?

a = b = c = d = 5

puts (a) >> 5
puts (b) >> 5
puts (b) >> 5
puts (b) >> 5
a= a+1
puts (a) >> 6
puts (b) >> 5
Run Code Online (Sandbox Code Playgroud)

我发现分配这样的值没有问题.我的问题是,应该像上面给出的那样分配还是像这样?

a , b, c, d = 5, 5, 5, 5
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

55
推荐指数
3
解决办法
2万
查看次数

无效为返回类型

我用PHP 7测试了返回类型.

我创建了一个简单的脚本来测试PHP 7的返回类型:

<?php

Class Obj {

    public function __construct(){

    }

    public function test(): string { //a string needs to be returned
        return "ok";
    }

}

function foo(): Obj { //instance of Obj needs to be returned
    return new Obj();
}

$o = foo();
echo $o->test(); // output: ok
Run Code Online (Sandbox Code Playgroud)

现在,当您指定返回类型时,在其他编程语言中,void这意味着您无法返回任何内容,否则您将收到错误.所以我写了这个脚本:

<?php

    function foo(): void {

    }

    foo(); 
Run Code Online (Sandbox Code Playgroud)

现在在上面的脚本中,预期的输出是什么.相反,它给了我一个致命的错误:

致命错误:foo()的返回值必须是void的实例,在第2行返回none

我的问题是(我找不到),在PHP 7中会有类似的void类型吗?

php return-type void php-7

42
推荐指数
3
解决办法
4万
查看次数

在Swift中返回instancetype

我正在尝试进行此扩展:

extension UIViewController
{
    class func initialize(storyboardName: String, storyboardId: String) -> Self
    {
        let storyboad = UIStoryboard(name: storyboardName, bundle: nil)
        let controller = storyboad.instantiateViewControllerWithIdentifier(storyboardId) as! Self

        return controller
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到编译错误:

错误:无法将'UIViewController'类型的返回表达式转换为返回类型'Self'

可能吗?我也想成为init(storyboardName: String, storyboardId: String)

swift swift-extensions swift2

35
推荐指数
2
解决办法
1万
查看次数

如何查找数组类的长度?

$param = k.chomp.split("\t")
Run Code Online (Sandbox Code Playgroud)

如何找到$param它是一个数组的长度?实际上在我写作的时候

puts $param.class
Run Code Online (Sandbox Code Playgroud)

我得到了类似数组的o/p.现在我如何找到这个数组的长度?

我试过了,$param.length但它不起作用.

ruby arrays ruby-on-rails

34
推荐指数
2
解决办法
8万
查看次数

警告:mysqli_connect():( HY000/1045):用户'用户名'@'localhost'拒绝访问(使用密码:YES)

警告:mysqli_connect():( HY000/1045):第6行的C:\ Users\xampp\htdocs\PHP_Login_Script\config.php中的用户'用户名'@'localhost'(使用密码:YES)拒绝访问

警告:mysqli_real_escape_string()要求参数1为mysqli,第10行的C:\ Users\xampp\htdocs\PHP_Login_Script\login.php中给出布尔值

警告:mysqli_real_escape_string()要求参数1为mysqli,布尔值在第11行的C:\ Users\xampp\htdocs\PHP_Login_Script\login.php中给出

警告:mysqli_query()要求参数1为mysqli,第15行的C:\ Users\xampp\htdocs\PHP_Login_Script\login.php中给出布尔值

警告:mysqli_fetch_array()期望参数1为mysqli_result,在第16行的C:\ Users\xampp\htdocs\PHP_Login_Script\login.php中给出null

警告:mysqli_num_rows()期望参数1为mysqli_result,在第19行的C:\ Users\xampp\htdocs\PHP_Login_Script\login.php中给出null

即使我的配置文件是这样的,我在localhost上也会收到此错误:

<?php

    define("DB_HOST", "localhost");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    define("DB_DATABASE", "databasename");

    $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

?>
Run Code Online (Sandbox Code Playgroud)

这曾经有用,但现在已不复存在了.这段代码有问题还是现在不能正常工作?是我正在进行的教程.

php mysql database localhost phpmyadmin

28
推荐指数
6
解决办法
40万
查看次数

如何检查我的功能是否打印/回声?

我经常使用echo来调试功能代码:

public function MyFunc() {

    // some code...
    echo "OK";
    // some code...

}
Run Code Online (Sandbox Code Playgroud)

如何检查我的函数print/echo是什么?

(伪代码):

MyFunc();

if (<when something was printed>){
    echo "You forgot to delete echo calls in this function";
}
Run Code Online (Sandbox Code Playgroud)

php function echo

22
推荐指数
2
解决办法
2554
查看次数

寻找接下来的13个星期一和上周一

我有以下代码,从今天的日期开始返回接下来的13个星期一.

for($i=1; $i<=13; $i++){
    echo date("Y-m-d", strtotime('+'.$i.' Monday'))."<br>";
}
Run Code Online (Sandbox Code Playgroud)

我希望能够修改它,这样它不仅可以显示接下来的13个星期一,还可以显示刚刚过去的星期一.

我尝试修改代码如下,但我得到下一个星期一返回的两个实例.

for($i=-1; $i<=13; $i++){
echo date("Y-m-d", strtotime('+'.$i.' Monday'))."<br>";
}
Run Code Online (Sandbox Code Playgroud)

数据已返回.

2015-04-13
2015-04-20  //<--
2015-04-20
2015-04-27
2015-05-04
2015-05-11
2015-05-18
2015-05-25
2015-06-01
2015-06-08
2015-06-15
2015-06-22
2015-06-29
2015-07-06
2015-07-13
Run Code Online (Sandbox Code Playgroud)

关于我如何实现这一点的任何想法?

php datetime date

18
推荐指数
2
解决办法
578
查看次数

PHP 7接口中的静态返回类型

为什么在PHP 7中无法声明具有static返回类型的接口?

假设我有以下课程:

interface BigNumber {
    /**
     * @param BigNumber $that
     *
     * @return static
     */
    public function plus(BigNumber $that);
}

class BigInteger implements BigNumber { ... }
class BigDecimal implements BigNumber { ... }
Run Code Online (Sandbox Code Playgroud)

我想执行的返回类型plus()的方法static,那就是:

  • BigInteger::plus() 必须退货 BigInteger
  • BigDecimal::plus() 必须退货 BigDecimal

我可以通过以下方式声明接口:

public function plus(BigNumber $that) : BigNumber;
Run Code Online (Sandbox Code Playgroud)

但这并没有强制执行上述规定.我想做的是:

public function plus(BigNumber $that) : static;
Run Code Online (Sandbox Code Playgroud)

但到目前为止,PHP 7并不满意:

PHP解析错误:语法错误,意外'静态'(T_STATIC)

是否有特定原因,或者这是一个应该报告的错误?

php interface php-7

15
推荐指数
2
解决办法
3947
查看次数

为什么DateTime :: createFromFormat()失败并在我的第二个例子中返回一个布尔值?

当我运行它时,第一个正确创建为日期.第二个失败,返回a boolean,所以我无法格式化.时间是否超出范围?

//works correctly
$startDate = "2015-05-06 10:49:20.637133";
$start = DateTime::createFromFormat('Y-m-d h:m:s.u',$startDate);
echo $start->format('m/d/y');

//doesn't work correctly
$startDate = "2015-05-12 15:49:06.821289";
$start = DateTime::createFromFormat('Y-m-d h:m:s.u',$startDate);
echo $start->format('m/d/y');
Run Code Online (Sandbox Code Playgroud)

Code to reproduce the error

php string format datetime

14
推荐指数
3
解决办法
3万
查看次数