我对数组不太满意,但我正在尝试。虽然无法想象这一点。如果单位高于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);
答案 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
开头的数字数组。