2列の多次元配列を作ろうとしています。名前とカウンター。すべての名前で単一の配列を作成できます。しかし、それを多次元にして、カウンターを更新する方法がわかりません。私がこれまでに得たコードは
if (!in_array($prodname, $da)){
array_push($da, $prodname);
}
そして、foreach でそれをダンプすることができます。二次元化するにはどうすればいいですか?これは古い値を更新しても問題ありません。等
2列の多次元配列を作ろうとしています。名前とカウンター。すべての名前で単一の配列を作成できます。しかし、それを多次元にして、カウンターを更新する方法がわかりません。私がこれまでに得たコードは
if (!in_array($prodname, $da)){
array_push($da, $prodname);
}
そして、foreach でそれをダンプすることができます。二次元化するにはどうすればいいですか?これは古い値を更新しても問題ありません。等
次のようになりたい$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);
...
私があなたの質問を誤解していない限り、それは非常に可能性があります。
名前とカウンターだけが必要な場合は、通常の配列を使用できるはずです。
$nameCountArray = array();
foreach($names as $name){
if(!array_key_exists($name,$nameCountArray)){
$nameCountArray[$name] = 1;
}else{
$nameCountArray[$name] = $nameCountArray[$name] + 1;
}
}
多次元配列が必要な場合、これらは単なる配列の配列であり、そのようにアクセスできます。これの良い例は、2 次元配列を使用して位置を格納することです (たとえば、3 x 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'