所以我有一个二维数组,有两列,付款和日。问题是每天都没有付款,因此我的数组只包含付款的特定日期。
付款------日
13000 ----------- 3
2500 ------------- 4
6700 ------------ 8
所以,我想要每月一个包含31个字段的数组,如果没有付款,请说明第一天array[0] = 0;
。我曾考虑过使用in_array
专门查找每一天:
for ($i=1; $i <=31 ; $i++) {
if(in_array($i, $payments))
}
但即使我找到了一天,如何访问该特定列的数组['付款']字段?
答案 0 :(得分:1)
使用与array_search()
类似的in_array()
除了返回密钥之外怎么样?
for ($i=1; $i <=31 ; $i++) {
$row = array_search($i, $payments);
if($row !== FALSE) {
//Do something with $payments[$row]['payment']
}
}
如果我误解你的阵列结构,请告诉我。
答案 1 :(得分:0)
您应该让数组以日期编号作为键,将付款作为值。然后,您可以使用简单的isset()
检查数组是否包含任何记录:
$payments = array(
3 => 13000,
4 => 2500,
8 => 6700,
);
for ($i=1; $i <=31 ; $i++) {
if (isset($payments[$i])) {
echo $payments[$i] . "\n";
}
}
答案 2 :(得分:0)
以下列方式从查询中创建数组:
$payments = array();
while ($row = $stmt->fetch_assoc()) {
$payments[$row['day']] = $row['payment'];
}
然后,您可以使用isset($payments[$i])
来判断您是否有特定日期的付款。