每次发生重复变量时,我都会尝试增加$ 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
我的代码有效,只是我收到了一些奇怪的通知。
答案 0 :(得分:9)
$newarray = array();
foreach ($array as $variable)
{
if (!isset($newarray[$variable])) {
$newarray[$variable] = 0;
}
$newarray[$variable]++;
}
答案 1 :(得分:2)
看看函数array_count_values()。它完全符合您的要求。
来自php.net的示例:
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
结果:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
答案 2 :(得分:1)
<?php
$newarray = array();
foreach ($array as $variable) {
if ( !array_key_exists($variable, $newarray) ) {
$newarray[$variable] = 0;
}
++$newarray[$variable];
}
var_dump($newarray);
但你也可以改用array_count_values()。
答案 3 :(得分:0)
你正在增加错误的东西,试试这个:
foreach ($array as $key => $variable) {
$array[$key]++;
var_dump($array);
}
答案 4 :(得分:0)
$newarray = array();
foreach ($array as $variable)
{
if(!isset($newarray[$variable]))
$newarray[$variable] = 0;
$newarray[$variable]++;
var_dump($newarray);
}