我很难找到一个命名多维PHP数组的系统,因此通过查看变量名称,您可以获得有关多维数组结构的提示。
一个虚构的例子:
$task = array('who'=>'John', 'what'=>'wash the dishes', 'priority'=>10);
$calendar[$year][$month][$day][$task_id] = $task;
在这种情况下,我将其命名为“日历”,因为整个结构整体上具有简单的含义,但在大多数情况下,没有与单个词甚至现实生活概念的直接连接。另外,我在这里使用日期部分(年,月,日)作为示例,但通常我的键是整数数据库记录ID。
所以我想建立一个命名系统来描述这种关系:
"year X month X day -> list of tasks"
更一般地说:
"key1 x key2 x key3 x ... x key n -> items"
一种可能的命名惯例,使用一词,并将下划线作为键之间的分隔符:
$tasks_by_year_month_day = array(...); // items_by_key1_key2_key3
所以,保持相同的约定,我会写:
$tasks_by_month_day = $tasks_by_year_month_day['2010'];
或
$november2010Tasks_by_day = $tasks_by_year_month_day['2010']['nov'];
是否有标准或更简洁的方法来命名这种数组?
谢谢。
答案 0 :(得分:1)
在可能的情况下使用描述性变量名称可以让人们更容易理解代码。然而,当名称变得太长并且可读性受损时,肯定会出现这种情况。
请记住,变量名的目的是使程序更容易理解。如果有关于不相关的数据的信息,则不应包含该信息。例如:
function getTasksByDate($year, $month, $day) {
$tasks = getTasks();
return $tasks[$year][$month][$day];
}
在这种情况下,谁愿意将$tasks
重命名为$tasks_by_year_month_day
?不仅清楚索引顺序是什么。此外,这个例子提出了抽象数据类型的想法。
使用抽象数据类型,您可以公开对任务结构进行操作的大量描述性函数名称。这意味着您真正需要关心索引顺序的唯一情况是在公开ADT的函数中。此时,您可以在文件顶部注释索引顺序。
简而言之,您不能希望在变量名中包含每一条信息。大多数时候,没有人想要每件作品。尝试利用当前上下文缩短变量名称并阐明总体目标。
答案 1 :(得分:0)
这可能是个人/公司的决定。我经常将它们命名为$lut_a_to_b
(b的查找表为a)。它有助于使用示例结构为具有超过几行的变量编写注释。