Php 没有变量数组索引分配
我最近写了以下代码:Php 没有变量数组索引分配,php,arrays,syntax,Php,Arrays,Syntax,我最近写了以下代码: // $day = 1..31 $ends = ['th', 'st', 'nd', 'rd']; $day .= ($day%10 < 4 ? $ends[$day%10] : 'th'); /$day=1..31 $ends=['th','st','nd','rd']; $day.=($day%10
// $day = 1..31
$ends = ['th', 'st', 'nd', 'rd'];
$day .= ($day%10 < 4 ? $ends[$day%10] : 'th');
/$day=1..31
$ends=['th','st','nd','rd'];
$day.=($day%10<4?$ends[$day%10]:'th');
为什么我不能写:(?)
$day.=($day%10<4?['th','st','nd','rd'][$day%10]:'th');
是否可以使用不在变量中的数组
编辑:
在PHP5.5中可能吗?问题在于这一行:
$ends = ['th', 'st', 'nd', 'rd'];
应该是:
$ends = Array ('th', 'st', 'nd', 'rd');
你的代码根本没有运行。它在执行消息之前失败
分析错误:语法错误,代码中意外出现“[”
您可能没有在PHP安装中打开错误,因此您没有意识到这一点。您不能像在Javascript中那样在PHP中定义数组。我做了上述更改后,您的代码运行良好
你的算法似乎也很有效,虽然我没有对从1到31的每一个数字进行测试
请注意,您不能这样做:
$day .= ($day%10 < 4 ? Array ('th', 'st', 'nd', 'rd')[$day%4] : 'th');
$day.=($day%10<4?数组('th','st','nd','rd')[$day%4]:'th');
您应该很高兴,因为它看起来很难看。:“从PHP 5.4开始,可以直接对函数或方法调用的结果进行数组解引用。以前,只能使用临时变量。”顺便说一句,即使考虑到您的代码仍然是错误的,因为自动数组索引从0开始,所以如果您的日期是3,它也会失败。@CBroe修复程序会是['','st','nd','rd']?这不可能吗?你确定
$day
是一个定义的整数值吗?你得到了哪个错误?这个月的21日、22日、23日和31日呢?@scunlife thx请注意,我的英语水平很低。在5.5中,可以动态定义数组:$Arr[…]@Daryl Gill是的,我的错…我懒得升级我的个人安装。不过,即使在5.5以下,我认为他也做不到:$day.=($day%10<4?['th','st','nd','rd'][$day%4]:'th');您的算法不允许第11、12、13条吗?您应该添加一个检查,查看$day<11&&$day>19
。另外,使用[“a”、“b”、“c”][1]
对我有用。@RobertSF我的问题是为什么我不能写作?你的回答是:你不能这样做。非常有用…@marek094对不起,Marek。我不是有意帮不上忙。我认为语言的设计不允许这样做,但似乎我错了。上面的Max说它确实有用。
$day .= ($day%10 < 4 ? Array ('th', 'st', 'nd', 'rd')[$day%4] : 'th');