Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 没有变量数组索引分配_Php_Arrays_Syntax - Fatal编程技术网

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');