相关疑难解决方法(0)

PHP解析/语法错误; 以及如何解决它们?

每个人都遇到语法错误.即使是有经验的程序员也会犯错误.对于新手来说,这只是学习过程的一部分.但是,通常很容易解释错误消息,例如:

PHP Parse错误:语法错误,第20行的index.php中出现意外的'{'

意想不到的符号并不总是真正的罪魁祸首.但是行号给出了从哪里开始寻找的粗略想法.

始终查看代码上下文.语法错误往往隐藏在提及前面的代码行.将您的代码与手册中的语法示例进行比较.

虽然不是每个案例都匹配另一个案例 然而,有一些常规步骤可以解决语法错误.这篇文章总结了常见的陷阱:

php debugging parsing syntax-error

614
推荐指数
13
解决办法
48万
查看次数

如何在PHP中动态调用类方法?

如何在PHP中动态调用类方法?类方法不是静态的.看起来

call_user_func(...)
Run Code Online (Sandbox Code Playgroud)

仅适用于静态功能?

谢谢.

php callback

53
推荐指数
4
解决办法
6万
查看次数

命名PHP可选参数?

在PHP 4/5中是否可以在调用时指定一个命名的可选参数,跳过你不想指定的参数(比如在python中)?

就像是:

function foo($a,$b='', $c='') {
    // whatever
}


foo("hello", $c="bar"); // we want $b as the default, but specify $c
Run Code Online (Sandbox Code Playgroud)

谢谢

php default-value

21
推荐指数
3
解决办法
9224
查看次数

检查多维数组中是否存在特定的数组键 - PHP

我有一个多维数组,例如(这可能是很多级别):

$array = Array ( 
    [21] => Array ( ) 
    [24] => Array ( 
        [22] => Array ( ) 
        [25] => Array ( 
            [26] => Array ( ) 
        ) 
    ) 
) 
Run Code Online (Sandbox Code Playgroud)

我试图循环它,看看是否存在某个键:

$keySearch = 22; // key searching for

function findKey($array, $keySearch) {
    foreach ($array as $item){
        if (isset($item[$keySearch]) && false === findKey($item[$keySearch], $item)){
            echo 'yes, it exists';
        }
    }
}

findKey($array, $keySearch);
Run Code Online (Sandbox Code Playgroud)

但它一无所获.循环中是否有错误?

php arrays multidimensional-array

20
推荐指数
4
解决办法
8万
查看次数

PHP多维数组长度

这是一个多维PHP数组.

$stdnt = array(
    array("Arafat", 12210261, 2.91),
    array("Rafat", 12210262, 2.92),
    array("Marlin", 12210263, 2.93),
    array("Aziz", 12210264, 2.94),
);
Run Code Online (Sandbox Code Playgroud)

我可以找出数组的长度.这意味着

count($stdnt); // output is 4

[
    array("Arafat", 12210261, 2.91),
    array("Rafat", 12210262, 2.92),
    array("Marlin", 12210263, 2.93),
    array("Aziz", 12210264, 2.94)
] ` 
Run Code Online (Sandbox Code Playgroud)

但无法获得内部数组长度.

我怎么能够 ?

php arrays

6
推荐指数
2
解决办法
9360
查看次数

Laravel 查询生成器传递多个参数作为逗号分隔列表不起作用

我正在使用 spatie/laravel-query-builder 来制作范围过滤器。在文档中我读到了这个:

您甚至可以通过将逗号分隔的列表传递给过滤器来将多个参数传递给作用域:

GET /events?filter[starts_between]=2018-01-01,2018-12-31
Run Code Online (Sandbox Code Playgroud)

因此,我在模型中创建了一个范围过滤器,如下所示:

public function scopeStartsBetween(Builder $query, $dates): Builder
{
    dd($dates);

    return $query->whereBetween('created_at', array($dates[0], $dates[1]));
}
Run Code Online (Sandbox Code Playgroud)

我的请求如下所示:

http://127.0.0.1:8000/?filter[starts_between]=2018-10-15,2018-10-17
Run Code Online (Sandbox Code Playgroud)

其结果dd($dates)是这样的:

"2018-10-15"
Run Code Online (Sandbox Code Playgroud)

因此,多个参数的逗号分隔列表不起作用,或者我做错了什么?

php laravel-5 laravel-query-builder

1
推荐指数
1
解决办法
2788
查看次数