我试图制作一个包含两列的多维数组。名称和计数器。我可以使用所有名称执行单个数组。但我不知道如何使它多维,并能够仍然更新计数器。我到目前为止的代码是
if (!in_array($prodname, $da)){
array_push($da, $prodname);
}
然后我可以用foreach把它丢弃。我如何使它二维?我怎么能说这存在更新旧值?等
答案 0 :(得分:1)
假设您希望$da
看起来像这样:
Array(
"name1" => array("score1" => 80, "score2" => 100),
"name2" => array("score1" => 50, "score2" => 60),
"name3" => array("score1" => 90, "score2" => 80),
...
)
然后您需要做的就是:
function setScore($prodName, $scoreName, $score)
{
global $da;
if (!array_key_exists($prodName, $da)) {
$da[$prodName] = array();
}
$da[$prodName][$scoreName] = $score;
}
setScore("name1", "score1", 80);
setScore("name1", "score2", 100);
setScore("name2", "score1", 50);
...
除非我误解你的问题,否则这很可能。
答案 1 :(得分:1)
如果您只需要名称和计数器,那么您应该只能使用普通数组:
$nameCountArray = array();
foreach($names as $name){
if(!array_key_exists($name,$nameCountArray)){
$nameCountArray[$name] = 1;
}else{
$nameCountArray[$name] = $nameCountArray[$name] + 1;
}
}
如果确实需要多维数组,这些只是数组的数组,可以这样访问。一个很好的例子是使用2d数组来存储位置(例如在3乘3网格上):
$twoDArray = array(
0 => array(0 => 1,
1 => 4,
2 => 7),
1 => array(0 => 2,
1 => 5,
2 => 8),
2 => array(0 => 3,
1 => 6,
2 => 9)
);
//Grab the item at 1,2
$item = $twoDArray[1][2];//Will give '8'