我确定这是一个愚蠢的问题,但我不明白其中的原因。为什么我不能将值添加到同一个数组键中?价值被覆盖。
$rows=array();
while($row = mysqli_fetch_array($result)) {
$rows[strval($row['year'])]=array('month'=>$row['month'],'satisfaction'=>$row['sat_per_month']);
}
答案 0 :(得分:2)
现在我假设您想要一个多维数组,其中包含年份和每行内部的月份和满意度数组。您只需使用$rows[strval($row['year']][]
附加它,因为每个数组键都是唯一的,您只需要覆盖它。
所以你的代码看起来像是:
$rows=array();
while($row = mysqli_fetch_array($result)) {
$rows[strval($row['year'])][] = array('month'=>$row['month'],'satisfaction'=>$row['sat_per_month']);
}
答案 1 :(得分:1)
数组索引是唯一的。以下代码适用于您的情况。
$rows=array();
while($row = mysqli_fetch_array($result)) {
$rows[strval($row['year'])][] = array('month'=>$row['month'],'satisfaction'=>$row['sat_per_month']);
}
答案 2 :(得分:1)
希望我能正确理解你的问题。一个数组键只能存储一个值(或一个值数组),所以:
https://[Jenkins-Server]/buildByToken/build?job=[job-name]&token=[token]
答案 3 :(得分:1)
在PHP(以及几乎所有编程语言)中,数组索引是唯一的。这意味着$ arr [" teletubbies"]不能成为" lala"和" noonoo"同时。原因很简单,如果你以后再调用$ arr [" teletubbies"],PHP就无法知道你是否意味着" lala"或" noonoo"然后。
要解决此问题(您希望按年份排序某些内容,例如2014年),建议将与2014关键字相关的值设为新数组,从而创建多维数组。你似乎明白这一点,但你的实现是错误的,因为你现在只是将$ rows [strval($ row [' year'])]更改为新的而不是追加新的价值观。
这个问题有多种解决方案:
解决方案1:
$rows=array();
while($row = mysqli_fetch_array($result)) {
//The syntax [] means: insert after the last defined key, more information at: http://php.net/manual/en/language.types.array.php look for $arr[] = 56;
$rows[strval($row['year'])][] = array('month'=>$row['month'],'satisfaction'=>$row['sat_per_month']);
}
解决方案2:
$rows=array();
while($row = mysqli_fetch_array($result)) {
//Make sure $rows[strval($row['year'])] is an array
if (!isset($rows[strval($row['year'])])) $rows[strval($row['year'])] = Array();
//array_push pushes a new array element to the last element of an array, documentation here: http://php.net/manual/en/function.array-push.php
array_push($rows[strval($row['year'])],array('month'=>$row['month'],'satisfaction'=>$row['sat_per_month']));
}
也可能有其他一些解决方案,但你明白了。
要稍后调用$ rows [strval($ row [' year'])]之一,您必须确保调用新创建的索引!例如:
//Three indexes! 1st is the year, 2nd is the nth child you added and third is Array("month" => "..", "satisfaction" => "...");
print_r($rows["2014"][5]);
或
echo $rows["2014"][3]["month"]." ".$rows["2014"][3]["satisfaction"];