我有PHP $_SESSION
数组,这些数组有不确定数量的元素。是否可以将所有值初始化为0,或者是否必须检查值是否为NULL
,然后每次检查值时设置为0?
编辑:我很抱歉我的问题模糊不清。 我有一个未定义的级别,我想将每个级别的所有分数存储在该数组中。目前我的等级数量是固定的,所以我目前只是写作:
$_SESSION['totals'] = array(0,0,0,0,0);
然后在添加操作数据时,我只是增加/添加一定数量的元素。
现在我更喜欢直接递增/添加值到某些元素,而无需检查值是否为NULL或类似的东西......
编辑2:编辑了我的代码,如下所示:
$_SESSION['totals'] = array();
if(array_key_exists($row['level']-1,$_SESSION['totals'])){
$_SESSION['totals'][$row['level']-1]++;
}else{
$_SESSION['totals'][$row['level']-1] = 1;
}
它似乎有效。谢谢fellas!
答案 0 :(得分:1)
您可以使用array_fill_keys
函数为定义的键填充指定值的数组:
$keys = array('foo', 'bar', 'baz');
$output = array_fill_keys($keys, 0);
答案 1 :(得分:1)
定义具有初始值的数组定义具有长度的数组。这不会阻止您在数组中添加或删除元素:
// initial array
$myArray = [0, 0, 0, 0];
print_r($myArray); // would output Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0)
$myArray[] = 1;
print_r($myArray); // would output Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 1 )
答案 2 :(得分:0)
$_SESSION
仅包含你的内容。只需确保在首次添加内容时添加0
而不是null
。
如果您以后需要这样做,我认为您的设计可能不好。但无论如何,$_SESSION
就像一个普通的数组,所以你可以使用PHP的数组函数来遍历数组并检查或更改每个值。
答案 3 :(得分:0)
PHP数组实际上不是您可能从其他语言中获知的数组。它们实际上更像是具有散列访问权限的链接列表。
这意味着:您要么知道要使用的所有字符串数组索引,要么确保它们存在,要么每次访问它们时都检查它们是否存在,这可能会失败。
对于数字索引,同样适用。您可能有一个索引为1,2和4的数组,但是如果仅使用for
循环运行它,则在访问不存在的元素3时会触发通知。
每当要迭代数组时,请使用foreach
循环。如果要记录数组值可能不存在,请与isset()
一起检查。如果您知道或假设数组元素必须存在,请不要这样做 - 如果不知道,您会收到通知,提醒您代码正在处理的数据结构与您认为的不同。这实际上是件好事。然后解决它。 :)
答案 4 :(得分:0)
最好的办法是通过围绕会话变量创建外观方法或getter和setter来抽象会话内容,而不是直接访问它们。这样,如果您所在的那个不存在,您可以返回默认值。
答案 5 :(得分:0)
我使用array_key_exists()
检查索引是否已设置。如果不是,我显示0
或在该字段中添加商店某个值,否则我会显示该索引的值或向该字段添加特定值。
归功于Sven提出这个问题。
答案 6 :(得分:-1)
检查你的会话中的内容,循环播放。不确定这是不是你要问的。
foreach($_SESSION as $x=>$y)
{
if(empty($x)) { //do something }
}