Поиск дубликата в ассоциированном массиве через php

Я делаю программу, в которой мой ввод - «палаш». Результат будет:

p-1
a-2
l-1
s-1
h-1

Мой код приведен ниже:

<?php

    $myString = "palash";
    $j=strlen($myString);
    $narray = array();

    for($i=0;$i<$j;$i++){
        $val = 0;
        for($k=0;$k<$j;$k++){
            if ($myString[$i]==$myString[$k]){
                $val++;

            }

        }
        $key = $myString[$i];

        $narray[$key] = $val;

    }
    foreach($narray as $key => $val){
        echo $key. "-". $val;
        echo"<br>";

    }


?>

Но я хочу свести к минимуму свой код и добавить опцию поиска перед вторым циклом для поиска, дублируется ли элемент или нет. Так что я могу избавиться от второго цикла foreach.

Проверьте это: ссылка на сайт

Niklesh Raut 16.05.2018 11:40

Я бы создал массив типа int размером 26, а затем обработал бы мою строку в цикле, используя код ascii, чтобы получить правильный индекс в моем массиве и увеличить его. Одна петля. Затем вы извлекаете ascii-код символа для отображения с помощью вашего индекса и отображаете значение внутри него :) Вероятно, не лучший, но я подумал, что было бы неплохо поделиться

xoxel 16.05.2018 12:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
35
2

Ответы 2

Вы можете использовать array_count_values для подсчета значений. Вы можете проверить, есть ли дубликаты, если есть 2 или более значений.

$myString = "palash";

$arr = str_split( $myString  );       //Split the string into array.
$arr = array_count_values( $arr );    //Count the array values.

echo "<pre>";
print_r( $arr );
echo "</pre>";

Это приведет к:

Array
(
    [p] => 1
    [a] => 2
    [l] => 1
    [s] => 1
    [h] => 1
)

Док: array_count_values ​​()

Вы можете проверить, существует ли ключ массива, а затем увеличить счетчик

<?php
$myString = "palash";
$j=strlen($myString);
$narray = array();

for($i=0;$i<$j;$i++){
    $key = $myString[$i];
    if (array_key_exists($key,$narray))
    {
         $narray[$key] = $narray[$key]+1;
    }
    else
    {
         $narray[$key] = 1;
    }
}
foreach($narray as $key => $val){
    echo $key. "-". $val;
    echo"<br>";

}

?>

Другие вопросы по теме