2013-01-23 4 views
0

두 개의 열이있는 다차원 배열을 만들려고합니다. 이름과 카운터. 나는 모든 이름을 가진 하나의 배열을 할 수있다. 하지만 다차원으로 만들고 카운터를 업데이트 할 수있는 방법을 모릅니다. 내가 지금까지 얻은 코드는PHP 다차원 배열 카운터

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

입니다. 그런 다음 foreach를 사용하여 다시 덤프 할 수 있습니다. 어떻게 2 차원으로 만들 수 있습니까? 어떻게 이것이 기존 값을 업데이트했는지 어떻게 알 수 있습니까? 등

+0

이름이 필요하고 카운터는 일반 배열을 사용할 수 없습니까? – Jim

+1

귀하의 카운터는 어디에 있습니까? 또는 무엇을 세고 싶습니까? 질문을 조금 더 채우십시오. – RightHandedMonkey

+0

재고 목록을 생성하고 재고를 생성하려고합니다. 나는 differnt 테이블에 대한 SQL 호출을 수행하고 있으며 모든 제품 목록을 가지고 싶습니다. 해머와 같은 목록에 넣으려고합니다 : 1 Screwdriver : 5 TapeMeasure : 2 etc. – user1832787

답변

1

다음은 일반 배열을 사용할 수 있어야합니다 : 당신이 다차원 배열을해야하는 경우

$nameCountArray = array(); 
foreach($names as $name){ 
    if(!array_key_exists($name,$nameCountArray)){ 
     $nameCountArray[$name] = 1; 
    }else{ 
     $nameCountArray[$name] = $nameCountArray[$name] + 1; 
    } 
} 

이러한 배열의 단지 배열하고 같은 액세스 할 수 있습니다. 좋은 예는 2 차원 어레이를 사용하여 위치를 저장하는 것입니다 (예 : 3x3 격자).

$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' 
+0

첫 번째 코드가 작동했습니다. 어쨌든 배열에있는 모든 $ 이름을 얻을 수 있습니까? foreach 루프로 모든 변수를 얻을 수있는 것처럼.해머 : 1 – user1832787

+0

'foreach ($ nameCountArray as $ name => $ count) {'를 사용하여 $ nameCountArray를 반복 할 수 있습니다. 루프에서 $를 사용할 수 있습니다. 이름과 $ count는 메시지를 출력합니다. – Jim

1

이처럼 보이도록 $da을 원하는 가정하면 :

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

하는 나는 매우 당신의 질문을 오해하고있어 않는 :

Array(
    "name1" => array("score1" => 80, "score2" => 100), 
    "name2" => array("score1" => 50, "score2" => 60), 
    "name3" => array("score1" => 90, "score2" => 80), 
    ... 
) 

을 그리고 당신이 할 필요가 같은입니다 가능한. 당신은 단지 이름과 카운터를해야하는 경우

+0

이것은 실제로'array_key_exists' 검사없이 작동합니다. – PleaseStand