解析错误:语法错误,意外'=>' (T_DOUBLE_ARROW)

时间:2015-12-04 23:46:16

标签: php arrays time

我对数组不太满意,但我正在尝试。虽然无法想象这一点。如果单位高于1,我想在每个“numberofunits”的末尾创建这个脚本,回显$text2。这是丹麦语。

år是一年, 月是, 周是, 等等。

function humanTiming ($time)
{

    $time = time() - $time; // to get the time since that moment
    $time = ($time<1)? 1 : $time;
    $tokens = array (
        31536000 => 'år' => '',
        2592000 => 'måned' => 'er',
        604800 => 'uge' => 'r',
        86400 => 'dag' => 'e',
        3600 => 'time' => 'r',
        60 => 'minut' => 'ter',
        1 => 'sekund' => 'er'
    );

    foreach ($tokens as $unit => $text => $text2) {
        if ($time < $unit) continue;
        $numberOfUnits = floor($time / $unit);
        return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'.$text2.':'');
    }

}

$time = $row['timestamp'];
echo humanTiming($time);

1 个答案:

答案 0 :(得分:4)

PHP多维数组不能以这种方式工作,

$tokens = [
    31536000 => 'år' => '',
];

这样做:

$tokens = [
    31536000 => ['år' => ''],
    2592000 => ['måned' => 'er'],
];

[ ]是一个数组表示法,可以在PHP 5.4之后使用,如果您有早期版本,请改用array( )。)

虽然我不确定这是否正是你需要的......

如果您有特定类型的数组,则应尝试使用对象。它们首先看起来更难,但它们更容易实现(与C ++ struct相比)。

回答评论,循环foreach ($tokens as $unit => $text => $text2)不起作用:

您无法轻松遍历维数组。 您需要 2嵌套foreach

foreach ($tokens as $token => $unitArray) { // outer array
    echo $token, PHP_EOL;
    foreach ($unitArray as $unit => $text) { // inner array
        echo $unit . ' has text: ' . $text, PHP_EOL;
    }
}

参数语法:

foreach ($array as $value)
foreach ($array as $key => $value)

不要因为什么是键和什么是值而感到困惑,值总是你指定的变量(对于键),无论什么类型的变量。如果您没有指定密钥,它将自动成为以0开头的数字数组。