2016-07-03 6 views
0

PHP 개발 초보자입니다. 나는 한 단어의 각 문자 수를 배열에 저장할 수 있기를 원한다.PHP에서 문자열의 각 문자 수를 저장합니다

단어가 "test"인 경우.

<?php 
    $content = file_get_contents($argv[1]); 
    $arr = explode(" ", $content); 
    $countArr = array(); 
    for($x = 0; $x < strlen($arr[0]); $x++) 
    { 
     $countArr[$arr[0][$x]]++; // taking first word and trying to store count of each letter 
    } 
    for($x = 0; $x < 256; $x++) 
    { 
     echo $countArr[$x]; // trying to print the count values 
    } 
    ?> 

그렇지 않은 :

다음
arr[116] = 2 
arr[101] = 1 
arr[115] = 1 

내가 시도 것입니다 :

내가 실제로 같은 것을 원하는 것이 측면에서

arr[t] = 2 
arr[e] = 1 
arr[s] = 1 

같은 것이 ASCII 할 작동하는 것 같습니다. C++에서는 이런 식으로 일을하곤 했었습니다. 내가 여기서 뭔가를 놓치고 있니? 도와주세요.

+1

스팅을 배열로 분할하려면'array_count_values ​​()'와'str_split()'을보십시오. (만약 당신이 현재 코드를 디버그하고 싶다면, 두 개의 for 루프 사이에'print_r ($ countArr);'를 쓰십시오; 또한 오류보고를 켜십시오) – Rizier123

+0

'Undefined Offset'으로 오류가납니다. 256 번. – Unbreakable

+0

C++에 대해 잊어 버려. 그것은 그와 같은 것이 아닙니다. – lulyon

답변

0

답을 코드화 할 수 있습니다 : P.S : 어리석은 증거가 아닐 수도 있습니다.

<?php 
// Program to find the word in a sentence with maximum specific character count 
// Example: "O Romeo, Romeo, wherefore art thou Romeo?” 
// Solution: wherefore 
// Explanation: Because "e" came three times 
$content = file_get_contents($argv[1]); // Reading content of file 
$max = 0; 
$arr = explode(" ", $content); // entire array of strings with file contents 
for($x =0; $x<count($arr); $x++) // looping through entire array 
{ 
$array[$x] = str_split($arr[$x]); // converting each of the string into array 
} 
for($x = 0; $x < count($arr); $x++) 
{ 
    $count = array_count_values($array[$x]); 
    $curr_max = max($count); 
    if($curr_max > $max) 
    { 
     $max = $curr_max; 
     $word = $arr[$x]; 
    } 
} 
echo $word; 
?> 
1

당신은 모든 욕망의 출력을 얻기 위해 str_split, array_count_valuesord를 사용해야합니다. 단순히 array_count_values를 사용하면 첫 번째 결과를 얻을 수 있으며 아스키 값을 배열 키로 사용하려면 ord을 사용하십시오.

$str = "test"; 
$arr = str_split($str); 
$count_val = array_count_values($arr); 

$res_ascii = array(); 
foreach($count_val as $k => $v){ 
    $res_ascii[ord($k)] = $v; 
} 

print_r($count_val); // Array ([t] => 2 [e] => 1 [s] => 1) 
print_r($res_ascii); // Array ([116] => 2 [101] => 1 [115] => 1) 
관련 문제