2013-02-27 3 views
0

저는 PHP와 프로그래밍에 익숙하지 않아서이 문제에 어려움을 겪고 있습니다.PHP 배열 개수와 요소 값 얻기

전체 상황의 목적은 탭 구분 파일에서 열을 읽은 다음 (이미 그렇게 했음) 그 안에있는 모든 다른 항목을 가져 와서 개별적으로 계산하여

Column1 [항목 값 - 레이블] , Column2 [count].

전체 열이 1 차원 배열에 있습니다. 이제는 그 안에있는 모든 항목과 그 개수를 나열하고 싶습니다. 문제는 내가 더 많은 10 개 이상의 다른 항목을 가질 수있다, 그래서 나는 다음과 같이 수동으로 (이름 (10 개) 변수와 각을 계산)을 수행 할 수 없습니다

$arr = array("complete","fail","complete","exit","fail","fail","complete"); 
function isComplete($value){ 
    return ($value == "complete") ? true : false; 
} 

$complete = array_filter($array, 'isComplete'); 

<tr> 
    <td>Complete</td> 
    <td><?php echo count($complete)?></td> 
</tr> 

-- > Complete = 3 

내가 모든 함수를 만드는 수동으로 피하고 싶은 값은 파일마다 다를 수 있으므로 각 값에 대해

$ 배열의 항목 수는 최대 20 개까지 올라갈 수 있으므로 모든 자동화가 필요합니다. 누군가 이걸로 나를 도울 수 있습니까?

+0

루프가 포함 된 카운트? – x4rf41

답변

2

배열을 검토하고 다른 배열에 카운트를 배치하는 방법은 어떻습니까? 이 라벨 전체에 균등하게 다양한 라벨 값 인 키 배열을 생성 할

$arr = array("complete","fail","complete","exit","fail","fail","complete"); 
$arrCount = Array(); 

foreach($arr as $value){ 
    $arrCount[$value] = array_key_exists($value,$arrCount) ? $arrCount[$value]+1 : 1; 
    //If this key exists, add 1 to it, else make it equal to 1 
} 

($arrCount).

print_r 출력 :

어레이 ([완료] => 3 실패] => 3 종료] => 1)

+0

각 $ 키에 대해 "알림 : 정의되지 않은 색인 : 완료"가 표시됩니다. – Ivan

+0

@ 아이언 업데이트를했습니다. – George

+0

좋아요! 고맙습니다! 그게 정확히 내가하고 싶었던 것입니다. 나는 그것을 테이블 에코로 @Niels 답장과 결합하여 올바른 결과를 얻었습니다. 정말 고맙습니다! – Ivan

0

사이비 번호 :

$arr = array("complete","fail","complete","exit","fail","fail","complete"); 
$counts = array(); 
foreach($arr => $key as $value) 
{ 
    if(array_key_exists($value, $counts)) 
    { 
     $counts[$value]++; 
    }else{ 
     $counts[$value] = 1; 
    } 
} 
foreach($counts => $key as $value) 
{ 
    echo '<tr> 
    <td>' . $key . '</td> 
    <td>' . $value . '</td> 
</tr>'; 
} 

목록의 요소 배열을 만들고 있습니다. 항목이 존재하면 증가시키고 그렇지 않으면 증가 시키려면 값 1로 작성하십시오. 사용자가 각 항목의 총 수를 표시 할 때마다 루프를 반복하십시오.

+0

) "foreach ($ counts => $ key as $ value)"라고 쓰시면됩니다. 구문 오류가 발생했습니다. – Ivan

+0

고맙습니다. 두 번째 코드를 상단 대답과 그것이 내가 원하는 방식으로 작동;) – Ivan

0

어쩌면 요점을 놓치고 있지만 정상적인 루프의 문제점은 무엇입니까? 예를 들어 :

function countByValue($array, $value){ 
    $count = 0; 
    foreach($array as $val){ 
     if ($val == $value){ 
      $count++; 
     } 
    } 
    return $count; 
} 

그리고 당신은 한 번에 모든 계산 F4R-20 답 가고 싶은 경우

$complete = countByValue($arr, 'complete'); 

로 부른다.