0

2列の多次元配列を作ろうとしています。名前とカウンター。すべての名前で単一の配列を作成できます。しかし、それを多次元にして、カウンターを更新する方法がわかりません。私がこれまでに得たコードは

if (!in_array($prodname, $da)){
    array_push($da, $prodname);
}

そして、foreach でそれをダンプすることができます。二次元化するにはどうすればいいですか?これは古い値を更新しても問題ありません。等

4

2 に答える 2

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);
...

私があなたの質問を誤解していない限り、それは非常に可能性があります。

于 2013-01-23T02:15:06.540 に答える
1

名前とカウンターだけが必要な場合は、通常の配列を使用できるはずです。

$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'
于 2013-01-23T02:20:36.117 に答える