添加到数组值(+1)

Ste*_*ven 8 php

我有一个阵列

$hourly = array(
        "01" => "0",
        "02" => "0",
        "03" => "0",
        "04" => "0",
        "05" => "0",
        "06" => "0",
        "07" => "0",
        "08" => "0",
        "09" => "0",
        "10" => "0",
        "11" => "0",
        "12" => "0",
        "13" => "0",
        "14" => "0",
        "15" => "0",
        "16" => "0",
        "17" => "0",
        "18" => "0",
        "19" => "0",
        "20" => "0",
        "21" => "0",
        "22" => "0",
        "23" => "0"
            );
Run Code Online (Sandbox Code Playgroud)

我有一堆数据,如"01","03"和"21",我想在数组中添加(+)到该特定值.因此,对于数据集"01","03","21","01","22",结果数组将是

$hourly = array(
        "01" => "2",
        "02" => "0",
        "03" => "1",
        "04" => "0",
        "05" => "0",
        "06" => "0",
        "07" => "0",
        "08" => "0",
        "09" => "0",
        "10" => "0",
        "11" => "0",
        "12" => "0",
        "13" => "0",
        "14" => "0",
        "15" => "0",
        "16" => "0",
        "17" => "0",
        "18" => "0",
        "19" => "0",
        "20" => "0",
        "21" => "1",
        "22" => "1",
        "23" => "0"
            );
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做呢?是否有一个函数将1添加到数组元素?

Sco*_*ott 20

$updates = array("01","03","21","01","22");
foreach($updates as $num) {
    $hourly[$num]++;
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ker 15

$hours = array("01", "03", "21" );
foreach($hours as $hour) {
   $hourly[$hour] += 1;
}
Run Code Online (Sandbox Code Playgroud)


Art*_*cto 5

通常情况下,您可以这样做:

$array["key"]++;
Run Code Online (Sandbox Code Playgroud)

但是,你的阵列有一些你应该修复的特性;

  • 您的键值实际上是字符串.如果你想要增加数字,你应该从头开始使用数字.如果您存储一个字符串并使用上面的语法递增它,它将被转换为整数.
  • 数组将字符串或数字存储为键.你正在使用两者."01"将被存储为字符串键,"10"将被存储为数字.考虑仅将数字存储为键.

这些都不会使您的脚本无法正常工作,但可以避免不一致和不必要的性能损失.