2017-05-22 2 views
0

Entschuldigung, wenn diese Frage bereits existiert. Ich habe eine Frage können Sie mir helfen. Verwenden Sie nur strlen Funktion und Array. Kann man mit PHP die Anzahl der Zeichenvorkommen in einer Zeichenkette zählen lassen (Character not repeat). Ähnlich, um eine neue array_count_values Funktion zu erstellen, die in PHP verfügbar ist. ZB:Anzahl der Zeichenvorkommen in einer Zeichenfolge in PHP ohne Verwendung der verfügbaren Funktion zählen

$input = 'lorem lis pum'; 
Output: 
l appeared 2 times; 
o appeared 1 times; 
r appeared 1 times; 
... 

Dies ist mein Code, wenn array_count_values verfügbar Funktion und es funktioniert.

$a = str_split($str, 1); 
foreach (array_count_values($a) as $key => $value) { 
    if ($key === ' ') { 
     $key = '_'; 
    } 
    echo $key.'appeared '.$value.' times<br>'; 
} 

Danke zum Lesen.

+0

ich curios bin zu wissen, warum Sie müssen ein Paradigma erstellen, das bereits existiert? Gibt es einen anderen Ansatz, den Sie erreichen möchten? und dafür müssen Sie eine neue Methode dafür erstellen? – hassan

+0

@hassan Ich möchte mehr darüber erfahren. und vielleicht werde ich in Zukunft eine neue Methode entwickeln. :)) –

Antwort

1

Dies ist eine Möglichkeit, dies zu tun. Ich bin mir sicher, dass es noch prägnantere Möglichkeiten gibt, dies zu tun.

$input = 'lorem lis pum'; 

for($i = 0, $ilen = strlen($input), $result = array(); $i < $ilen; $i++) { 
    $chr = $input[ $i ]; 
    // substituting the space with an underscore is not actually necessary 
    if($chr === ' ') { 
    $chr = '_'; 
    } 
    $result[ $chr ] = isset($result[ $chr ]) ? $result[ $chr ] + 1 : 1; 
} 

var_dump($result); 

Sie können view this example online.

1

du versuchen können, hoffen seine Hilfe :)

<?php 
$input = 'lorem lis pum'; 

function outputs($input) 
{ 
    $input = str_replace(' ', '', $input); 

    $characters = str_split($input); 

    $outputs = []; 

    foreach ($characters as $char) 
    { 
     if(!isset($outputs[$char])){ 
      $outputs[$char] = 1; 
     } else { 
      $outputs[$char] += 1; 
     } 
    } 

    foreach ($outputs as $char => $number) 
    { 
     echo $char . ' appeared ' . $number . ' times;<br />'; 
    } 
} 

outputs($input); 
?> 

oder einfache Version:

<?php 
$input = 'lorem lis pum'; 

function outputs($input) 
{ 
    //suggest remove all spaces first 
    $input = str_replace(' ', '', $input); 

    $chars = str_split($input); 

    foreach (array_count_values($chars) as $key => $value) 
    { 
     echo $key. ' appeared '.$value.' times<br>'; 
    } 
} 

outputs($input); 
?> 
0

Ausprobieren Verwenden Funktion count_chars

foreach (count_chars($str, 1) as $key => $value) { 
    echo chr($key).' appeared '.$value.' times<br>'; 
} 
+0

danke @Timur, aber ich möchte nicht verfügbar Funktion verwenden. –

Verwandte Themen