循环中的php数组声明

时间:2018-03-08 05:55:10

标签: php

$arr = array();
while($row1 = $stmt->fetch(PDO::FETCH_ASSOC))
{
    $case_code = $row1['case_code'];
    $arr[$case_code]['type1'] += $row1['type1'];
    $arr[$case_code]['type2'] += $row1['type2'];
    .................
}

我注意到未定义的偏移量,未定义的索引。 我应该使用

if (!isset($arr[$case_code])) {
    $arr[$case_code] = ''
}
if (!isset($arr[$case_code]['type1'])) {
    $arr[$case_code]['type1'] = 0;
}
if (!isset($arr[$case_code]['type2'])) {
    $arr[$case_code]['type1'] = 0;
}

或者还有其他更好的方法可以做到这一点。

1 个答案:

答案 0 :(得分:2)

首先将它设置为一个数组(因为它似乎想将它用作数组。)然后你可以使用它。

$arr = array();
while($row1 = $stmt->fetch(PDO::FETCH_ASSOC))
{
    $case_code = $row1['case_code'];

    if (!isset($arr[$case_code])) { // check if the index was already set
        $arr[$case_code] = array('type1' => 0, 'type2' => 0, ..., 'typeN' => 0); // set it first
    } 
    $arr[$case_code]['type1'] += $row1['type1'];
    $arr[$case_code]['type2'] += $row1['type2'];
    .................
}