繁体   English   中英

注意:尝试在PHP中递增关联数组时未定义索引

[英]Notice: Undefined index when trying to increment an associative array in PHP

每次发生重复变量时,我都会尝试增加$ variable的值。 我不确定这在语法上是否正确,但我认为这在语义上是正确的。 var_dump似乎吐出正确的输出,但我得到这个错误:注意:未定义的索引...

$newarray = array();
foreach ($array as $variable)
{
    $newarray[$variable]++; 
    var_dump($newarray);
}

$ array =(0 => h,1 => e,2 => l,3 => 1,4 => o);

目标:

'h' => int 1
'e' => int 1
'l' => int 2
'o' => int 1

我的代码有效,只是我收到了一些奇怪的通知。

$newarray = array();
foreach ($array as $variable)
{
    if (!isset($newarray[$variable])) {
        $newarray[$variable] = 0;
    }
    $newarray[$variable]++;
}

看一下函数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
)
<?php
$newarray = array();
foreach ($array as $variable) {
    if ( !array_key_exists($variable, $newarray) ) {
        $newarray[$variable] = 0;
    }
    ++$newarray[$variable];
}
var_dump($newarray);

但您也可以使用array_count_values()

你正在增加错误的东西,试试这个:

foreach ($array as $key => $variable) {
   $array[$key]++; 
   var_dump($array);
}
$newarray = array();
foreach ($array as $variable)
{
    if(!isset($newarray[$variable]))
      $newarray[$variable] = 0;

      $newarray[$variable]++; 
    var_dump($newarray);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM