This is a collection of questions that come up every now and then about syntax in PHP. This is also a Community Wiki, so everyone is invited to participate in maintaining this list.
It used to be hard to find questions about operators and other syntax tokens.¹
The main idea is to have links to existing questions on Stack Overflow, so it's easier for us to reference them, not to copy over content from …
我已经使用Java几年了,但直到最近我还没有碰到这个结构:
int count = isHere ? getHereCount(index) : getAwayCount(index);
Run Code Online (Sandbox Code Playgroud)
这可能是一个非常简单的问题,但有人可以解释一下吗?我该怎么看?我很确定我知道它是如何工作的.
isHere是真的,getHereCount()被称为,isHere是假getAwayCount()则调用.正确?这个结构叫做什么?
我想显示如下数字
How should I find the correct ordinal suffix (st, nd, rd or th) for each number in my code?
<?PHP
require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
throw new Exception('Error');
$c();
?>
Run Code Online (Sandbox Code Playgroud)
Twitto使用从PHP 5.3开始提供的几个新功能:
在PHP 5.3 中,数字2对?:做什么?
另外,匿名函数是什么意思?那不是已经存在了一段时间的东西吗?
php ternary-operator language-construct conditional-operator php-5.3
甚至用于告诉我们PHP"短标签"(<? /*...*/ ?>)的官方文档都是"糟糕的".然而,由于PHP 5.4,该echo品种<?= /*...*/ ?>被永久不管启用short_open_tag设置.
改变了什么?
即使之前因为short_open_tag在共享托管平台上是否启用了不可预测的特性而不鼓励他们,当然这个论点不会因为某些子主机将运行PHP 5.4而消失?
可以说,对语言的这种改变本身并不意味着我们应该避免使用"短标签"的建议的变化,但如果他们遇到了麻烦,那么看起来PHP开发人员似乎不再"讨厌"他们许多.对?
我现在可以得出的唯一合乎逻辑的结论是,在PHP 5.4中引入这一变化必须有一些客观的理由.
它是什么?
我希望扩展我的PHP知识,我遇到了一些我不确定它是什么或如何搜索它的东西.我正在看php.net的isset代码,我明白了isset($_GET['something']) ? $_GET['something'] : ''
我理解正常的isset操作,比如if(isset($_GET['something']){ If something is exists, then it is set and we will do something }但是我不明白?,重复再次获取,或者是''.有人可以帮我解决这个问题,或者至少指出我正确的方向吗?
$items = (isset($_POST['items'])) ? $_POST['items'] : array();
Run Code Online (Sandbox Code Playgroud)
我不明白这段代码的最后一段" ? $_POST['items'] : array();"
这些代码组合到底做了什么?
我使用它从html文本框中获取一堆值并将其存储到会话数组中.但问题是,如果我尝试在文本框中重新提交数据,新的数组会话将完全覆盖旧的会话数组空白和所有空格.
我只想覆盖已经有值的数组中的位置.如果用户决定只填写几个文本框,我不希望先前的会话数组数据被空格(来自空白文本框)覆盖.
我认为上面的代码是问题所在,但我不确定它是如何工作的.请赐教.
我正在使用一个API,要求我作为URI的一部分发出HTTP PATCH请求,这可以通过Javascript来做,我的研究显示我只能执行POST,GET,DELETE和PUT.是否允许PATCH?
谢谢,
我想将变量设置为值,但仅在条件为真时才设置.
而不是做以下事情:
if($myarray["foo"]==$bar){
$variablename=$myarray["foo"];
}
Run Code Online (Sandbox Code Playgroud)
如果变量名很长,或者它可能涉及数组,这可能会很长,当我想要做的很简单时 - 如果条件为真则设置一个值.
我想使用条件运算符,如下所示:
$variablename=($myarray["foo"]=="bar")? $myarray["foo"]......
Run Code Online (Sandbox Code Playgroud)
但这失败了,因为如果语句为false,我根本不想设置变量.
基本上,我要做的是让第一个例子更短.也许条件运算符不是这样的...
有没有人有什么建议?
我终于想起了要问的问题.我从来没有真正得到过什么:和?当像这样定义一个变量时:
$ip = ($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)
你可以看到有吗?和:和()
谁能给我一个关于它们的原因和方式的简要细节?
php ×8
syntax ×2
arguments ×1
coding-style ×1
conditional ×1
definition ×1
http ×1
isset ×1
java ×1
javascript ×1
numbers ×1
operators ×1
php-5.3 ×1
symbols ×1
variables ×1