我尝试在每次出现重复变量时增加$variable的值。我不确定这在语法上是否正确,但我认为这在语义上是正确的。var_dump似乎吐出了正确的输出,但我得到了这个错误:注意:未定义索引...
$newarray = array();
foreach ($array as $variable)
{
$newarray[$variable]++;
var_dump($newarray);
}
$array =(0 => h,1 => e,2 => l,3=> l,4=> o);
目标:
'h' => int 1
'e' => int 1
'l' => int 2
'o' => int 1
我的代码工作,只是我得到了一些奇怪的通知。
7条答案
按热度按时间x9ybnkn61#
但是你也可以使用array_count_values()。
js5cn81o2#
nfeuvbwi3#
我非常喜欢MickMackusa在
但是你可以使用数组元素引用保存第二次查找,如果不存在,它会自动插入
null
元素:幸运的是,递增运算符将
null
视为零,并根据需要递增到1。7hiiyaii4#
你正在增加错误的东西,试试这个:
qpgpyjmq5#
kb5ga3dv6#
看一下函数array_count_values()。它做的正是你想做的。
示例来自php.net:
测试结果:
sqougxex7#
在现代PHP中,您可以通过利用null合并运算符来避免
isset()
调用。在下面的代码片段中,如果变量尚未声明,则该技术将变量设置为0。然后你可以自由地使用一系列的速记操作,如串联,算术等。或者,如果你想继续使用
++
,那么你可以使用“null合并赋值运算符”。如果变量已经声明,则赋值右侧的逻辑甚至不会执行。下面的代码段将执行与上面的代码段相同的操作。至于您的示例数据和所需的字母和计数结果,我可能会使用完全原生的函数式方法。(Demo)
同样的结果,吸引力要小得多的技术: