-1

抱歉,这是一个糟糕的问题,我对其进行了修改以使其不那么本地化。我已经学会将我的问题缩小到实际原因。如果有人可以投票赞成这个问题,那么我可以再次在堆栈上提问,我将非常感激

我不断从这条线上得到一个错误。

        $file = $files[ rand( 0, count( $files ) ) ];

它抛出未定义的时区、未设置的数组或已定义的函数。

注意:未定义的偏移量:5 in /home/public_html/adserve.php on line 15
adserve.php

共享主机,因此无法访问 php.ini 文件。

4

3 回答 3

4

不存在随机错误。第一个几乎告诉你你需要做什么来修复它。

在第二个中,如果代码的第 15 行是这样的:

$file = $files[ rand( 0, count( $files ) ) ];

那么您未定义的偏移量问题在于您正在使用的零索引数组中的最高索引值将是count - 1.

因此你的线应该是

$file = $files[ rand( 0, count( $files ) - 1 ) ];
于 2012-10-24T00:42:48.667 回答
3

您收到的错误是因为您尝试访问$files不存在的数组索引,在这种情况下为5. 这是在元素数量为 5 时引起的,这意味着索引从 0 -> 4 开始。

您正在使用 PHP 的rand(),如果您指定了最小值和最大值,则包含在内,因此您需要将其count($files) - 1用作最大值:

$file = $files[ rand( 0, (count( $files ) - 1)) ];
于 2012-10-24T00:42:20.530 回答
1

对于时区设置错误,您需要编辑 php.ini 以更改 date.timezone 设置:

  date.timezone = 'America/Chicago'

对于通知“未定义的偏移量”,您需要检查该数组值是否实际存在:

  if (!empty($files[ rand( 0, count( $files ) ) ]))
         $file = $files[ rand( 0, count( $files ) ) ];
于 2012-10-24T00:44:34.380 回答