0

所以我有一个二维数组,有两列,payment 和 day。问题是付款不是每天都完成的,所以我的数组只包含完成付款的特定日期。

付款------天

13000----------- 3

2500------------- 4

6700 ------------ 8

所以,我想要一个每月有 31 个字段的数组,如果没有付款,那么第一天array[0] = 0;。我曾考虑过in_array专门寻找每一天:

for ($i=1; $i <=31 ; $i++) { 
    if(in_array($i, $payments))
}

但是,即使我找到了一天,我如何访问该特定列的 array['payment'] 字段?

4

3 回答 3

1

除了返回密钥之外,使用array_search()which怎么样?in_array()

for ($i=1; $i <=31 ; $i++) { 
    $row = array_search($i, $payments);
    if($row !== FALSE) {
        //Do something with $payments[$row]['payment']
    }
}

如果我误解了您的数组结构,请告诉我。

于 2013-10-01T02:03:11.590 回答
0

您应该使数组以天数为键,以付款为值。然后,您可以使用以下命令检查数组是否包含任何记录isset()

$payments = array(
    3 => 13000,
    4 => 2500,
    8 => 6700,
);
for ($i=1; $i <=31 ; $i++) { 
    if (isset($payments[$i])) {
         echo $payments[$i] . "\n";
    }
}
于 2013-10-01T02:03:59.413 回答
0

通过以下方式从查询创建数组:

$payments = array();
while ($row = $stmt->fetch_assoc()) {
    $payments[$row['day']] = $row['payment'];
}

然后,您可以isset($payments[$i])用来判断您是否有特定日期的付款。

于 2013-10-01T02:11:36.470 回答