2016-07-03 2 views
0

Я новичок в PHP Development. Я хочу иметь возможность хранить каждый символ числа слов в массиве.Хранить количество каждой буквы в строке в php

так что если слово "test".

Я хочу что-то вроде

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

С точки зрения к ASCII я на самом деле хочу что-то вроде:

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

Ниже то, что я пробовал:

<?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 
    } 
    ?> 

Это не похоже, работают. В C++ я делал что-то вроде этого, и он работал. Я что-то пропустил. Пожалуйста помоги.

+1

Посмотрите на 'array_count_values ​​()' и на 'str_split()', чтобы разделить ваше жало в массив. (Если вы хотите отлаживать свой текущий код, выполните следующие действия: 'print_r ($ countArr);' между вашими циклами for, также включите отчет об ошибках) – 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_values и ord для получения всех выходных желания. Просто array_count_values ​​дает вам первый выход желания, и если вы хотите использовать значение ascii в качестве ключа массива, используйте 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) 
Смежные вопросы