Я знаю, что есть лучшие способы сделать это. Я сделал это с помощью встроенных функций. Я пытаюсь получить лучшее понимание использования цикла for в другом цикле for. Конечный результат — подсчитать, сколько раз каждый уникальный символ появляется в исходной строке. Я не вижу, где моя логика ошибочна, но она не работает, поэтому это должна быть моя логика.
<!DOCTYPE >
<html>
<head>
<title><?php echo $page_title; ?></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css"/>
</head>
<body>
<div id="header">
<p>This is for testing yeay</p>
</div>
<div id="content_wrapper">
<?php
error_reporting (E_ALL | E_STRICT);
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
//original input turned into an array and is split either at space or comma
$user_input_num = preg_split("/[\s,]+/",$_POST['user_input_num']);
//array holding unique characters from original input
$temp_array = array_unique($user_input_num);
//length of original input
$len = sizeof($user_input_num);
//length of array that hold only original characters
$len2 = sizeof($temp_array);
//temp string to add results to when passing through loop
$results = "";
//outer loop cycles through unique characters
for($lcv = 0; $lcv < $len2-1; $lcv++)
{
$temp_unique_variable = $temp_array[$lcv];
//inner loop cycles through the original input to count how many times the unique characters are in there
for($lcv2 = 0; $lcv2 < $len; $lcv2++)
{
$count = 0;
//
if($temp_unique_variable == $user_input_num[$lcv2])
{
$count++;
}
if($lcv2 == $len)
{
$results .= $temp_unique_variable . " ". "(".$count . ")";
}
}
}
echo "Here is the original input : " . implode($user_input_num) ;
echo'<br />';
echo "Here are the unique characters in original input : " . implode($temp_array);
echo '<br />';
echo " Here is what is in result : " . $results;
}
?>
<div>
<form action="#" method="post">
<label for="user_input_num">Enter numbers here to find duplicates please use a space in between each number : </label>
<input type="text" name="user_input_num" id="user_input_num" placeholder="1 2 3 45 71 " value="<?php if(isset($_POST['user_input_num'])) echo $_POST['user_input_num'];?>"/>
<input type="submit" name="submit" value="submit" />
</div>
</div>
<footer>
<p>This is the footer great job.</p>
</footer>
</body>
</html>
Цикл для разрывов, когда $lcv2 == $len
for($lcv2 = 0; $lcv2 < $len; $lcv2++)
и оператор if проверяет $lcv2 == $len
так
$results .= $temp_unique_variable . " ". "(".$count . ")";
никогда не случится
Невозможно, чтобы результат содержал содержимое, потому что в цикле for вы сказали, что этот цикл должен выполняться только в том случае, если $lcv2 < $len
,
Так что ваш код в том, если никогда не будет достигнут, потому что $lcv2 == $len
никогда не случится.
Именно в этот момент ваш if будет успешным, ваш цикл скажет «стоп».
выполните это перед любыми проверками, но после того, как вы установите для переменных значение true, и запрос будет выполнен для проверки запроса:
while ($results .= $temp_unique_variable . " ". "(".$count . ")"){
print_r($results);
echo $count;
}