每个人都遇到语法错误.即使是有经验的程序员也会犯错误.对于新手来说,这只是学习过程的一部分.但是,通常很容易解释错误消息,例如:
PHP Parse错误:语法错误,第20行的index.php中出现意外的'{'
意想不到的符号并不总是真正的罪魁祸首.但是行号给出了从哪里开始寻找的粗略想法.
始终查看代码上下文.语法错误往往隐藏在提及或在前面的代码行.将您的代码与手册中的语法示例进行比较.
虽然不是每个案例都匹配另一个案例 然而,有一些常规步骤可以解决语法错误.这篇文章总结了常见的陷阱:
意外的T_FUNCTION ......
意外T_IF
意外T_FOREACH
意外T_FOR
意外T_WHILE
意外T_DO
意外T_PRINT
意外T_ECHO
意外的T_INLINE_HTML ......
意外的T_PAAMAYIM_NEKUDOTAYIM ......
意外的T_OBJECT_OPERATOR ......
意外的T_DOUBLE_ARROW ......
意想不到的T_SL ......
意外的T_BOOLEAN_OR ...
意外的T_BOOLEAN_AND ......
意外的T_NS_SEPARATOR ......
如何在PHP中动态调用类方法?类方法不是静态的.看起来
call_user_func(...)
Run Code Online (Sandbox Code Playgroud)
仅适用于静态功能?
谢谢.
在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)
谢谢
我有一个多维数组,例如(这可能是很多级别):
$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数组.
$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)
但无法获得内部数组长度.
我怎么能够 ?
我正在使用 spatie/laravel-query-builder 来制作范围过滤器。在文档中我读到了这个:
您甚至可以通过将逗号分隔的列表传递给过滤器来将多个参数传递给作用域:
Run Code Online (Sandbox Code Playgroud)GET /events?filter[starts_between]=2018-01-01,2018-12-31
因此,我在模型中创建了一个范围过滤器,如下所示:
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)
因此,多个参数的逗号分隔列表不起作用,或者我做错了什么?