是否有 PHP 等同于 Python 的 Counter 对象?
Is there a PHP equvalent to Python's Counter object?
在 Python 中,存在一个 Counter
class 允许我这样做:
counter = Counter()
counter[2] = 5
counter[3] = 2
for i in range(5):
print(f'counter[{i}]={counter[i]}')
这将给我以下输出:
counter[0]=0
counter[1]=0
counter[2]=5
counter[3]=2
counter[4]=0
基本上它的作用就好像字典中任何没有显式初始化的元素的值为零,并且在访问不存在的元素时永远不会抛出异常。
在PHP中是否有类似的实体,或者是在循环访问时检查每个索引的唯一方法?
我正在寻找避免这样做的方法:
for ($i = 0; $i < numOfSomeResults; $i++) {
if (isset($otherResult[$i]) {
echo $otherResult[$i];
} else {
echo "0";
}
}
然后做类似的事情:
for ($i = 0; $i < $numOfSomeResults; $i++) {
echo $counter[i];
}
如果有帮助的话,我需要使用的索引和值都是整数。
试试这个:
在 'i' 前面加上 '$'。下面的代码必须有效
for ($i = 0; $i < numOfSomeResults; $i++) {
if (isset($otherResult[$i]) {
echo $otherResult[$i];
} else {
echo 0;
}
}
无需重新发明轮子并继续 Alex 的评论,您可以使用空合并运算符 (PHP 7+)
for ($i = 0; $i < $numOfSomeResults; $i++) {
echo $counter[$i] ?? 0;
}
关于它的作用的一些背景信息:
Null Coalescing 运算符主要用于避免对象函数return NULL 值而不是return 默认优化值。它用于避免异常和编译器错误,因为它在执行时不会产生 E-Notice。
(Condition) ? (Statement1) ? (Statement2);
同样的语句可以写成:
if ( isset(Condition) ) {
return Statement1;
} else {
return Statement2;
}
在 Python 中,存在一个 Counter
class 允许我这样做:
counter = Counter()
counter[2] = 5
counter[3] = 2
for i in range(5):
print(f'counter[{i}]={counter[i]}')
这将给我以下输出:
counter[0]=0
counter[1]=0
counter[2]=5
counter[3]=2
counter[4]=0
基本上它的作用就好像字典中任何没有显式初始化的元素的值为零,并且在访问不存在的元素时永远不会抛出异常。
在PHP中是否有类似的实体,或者是在循环访问时检查每个索引的唯一方法?
我正在寻找避免这样做的方法:
for ($i = 0; $i < numOfSomeResults; $i++) {
if (isset($otherResult[$i]) {
echo $otherResult[$i];
} else {
echo "0";
}
}
然后做类似的事情:
for ($i = 0; $i < $numOfSomeResults; $i++) {
echo $counter[i];
}
如果有帮助的话,我需要使用的索引和值都是整数。
试试这个:
在 'i' 前面加上 '$'。下面的代码必须有效
for ($i = 0; $i < numOfSomeResults; $i++) {
if (isset($otherResult[$i]) {
echo $otherResult[$i];
} else {
echo 0;
}
}
无需重新发明轮子并继续 Alex 的评论,您可以使用空合并运算符 (PHP 7+)
for ($i = 0; $i < $numOfSomeResults; $i++) {
echo $counter[$i] ?? 0;
}
关于它的作用的一些背景信息: Null Coalescing 运算符主要用于避免对象函数return NULL 值而不是return 默认优化值。它用于避免异常和编译器错误,因为它在执行时不会产生 E-Notice。
(Condition) ? (Statement1) ? (Statement2);
同样的语句可以写成:
if ( isset(Condition) ) {
return Statement1;
} else {
return Statement2;
}