Здравствуйте.
Есть задача. При вводе в текстовые поля списка из слов (Ключ 1, Ключ 2, Ключ 3), нужно пересечь эти слова друг с другом и вывести в отдельное текстовое поле (Результат).
Вводя список в виде строк, я перевожу их в список-массив, разбивая строку на значения массива.
Мне также нужно, чтобы перед пересечением слов у массивов не было пустых значений. Для этого использую функцию array_dif(). Но если я вбиваю ключи в текстовые поля и где-то пропуская значение, оставляя пускую строку, эта функция не срабатывает, а мне выводится пересечение нормального значения с пустым. Вместо 3-х слов - два. Вместо 2-х - одно.
Вопрос 1. Как реализовать удаление пустых значений в массиве перед их пересечением?
Вопрос 2. Как вывести эти значения в текстовое поле "Результат"?
Код ниже:
<?php
function keys()
{
// Берём ключи из форм
$key1 = $_POST['key1'];
$key2 = $_POST['key2'];
$key3 = $_POST['key3'];
// Переводим строки в массив
$key1_array = explode("\n", $key1);
$key2_array = explode("\n", $key2);
$key3_array = explode("\n", $key3);
// Убираем пустые (нулевые) значения в массивах
$key1_array = array_diff($key1_array, array('', null));
$key2_array = array_diff($key2_array, array('', null));
$key3_array = array_diff($key3_array, array('', null));
// Пересекаем все значения ключей массивов друг с другом
for($a = 0; $a < count($key1_array); $a++)
{
for($b = 0; $b < count($key2_array); $b++)
{
for($c = 0; $c < count($key3_array); $c++)
{
$massiv = $key1_array[$a].' '.$key2_array[$b].' '.$key3_array[$c];
echo $massiv.'<br>';
}
}
}
}
keys();
?>
<!DOCTYPE html>
<html>
<head>
<title>PPC</title>
<meta charset="utf-8">
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<label>
Ключи 1: <textarea name="key1" rows="5"></textarea><br>
Ключи 2: <textarea name="key2" rows="5"></textarea><br>
Ключи 3: <textarea name="key3" rows="5"></textarea><br>
Результат: <textarea id="text" name="result" rows="10"><?php keys();?></textarea><br>
</label>
<input type="submit" name="" value="Перемножить"><br>
</form>
</body>
</html>
Вместо
$key1_array = array_diff($key1_array, array('', null));
поставить
foreach($key1_array as $key=>$value){
if(empty($value) || in_array($value,array("\n","\r","\n\r","\r\n"))){
unset($key1_array[$key]);
}
unset($key,$value);
}
И так для каждого из массивов
Предлагаю сделать вот что:
while(strpos($key1, "\n\n")) $key1 = str_replace("\n\n", "\n", $key1);
Я тебе немного не понял но думаю ты имее в виду это
0 0 0 конец
а б в
0 0 1 конец
а б е
0 1 0 конец
а д в
0 1 1 конец
а д е
1 0 0 конец
г б в
1 0 1 конец
г б е
1 1 0 конец
г д в
1 1 1 конец
г д е
так
<?php
// Берём ключи из форм
$key1 = $_POST['key1'];
$key2 = $_POST['key2'];
$key3 = $_POST['key3'];
// Переводим строки в массив
$key1_array = explode("\r\n", $key1);
$key2_array = explode("\r\n", $key2);
$key3_array = explode("\r\n", $key3);
// Убираем пустые (нулевые) значения в массивах
$key1_array = array_diff($key1_array, array('', null));
$key2_array = array_diff($key2_array, array('', null));
$key3_array = array_diff($key3_array, array('', null));
// Пересекаем все значения ключей массивов друг с другом
for($a = 0; $a < count($key1_array); $a++)
{
for($b = 0; $b < count($key2_array); $b++)
{
for($c = 0; $c < count($key3_array); $c++)
{
echo $a." ".$b." ".$c." конец<br>";
$massiv = $key1_array[$a].' '.$key2_array[$b].' '.$key3_array[$c];
echo $massiv.'<br>';
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>PPC</title>
<meta charset="utf-8">
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<label>
Ключи 1: <textarea name="key1" rows="5"></textarea><br>
Ключи 2: <textarea name="key2" rows="5"></textarea><br>
Ключи 3: <textarea name="key3" rows="5"></textarea><br>
Результат: <textarea id="text" name="result" rows="10"></textarea><br>
</label>
<input type="submit" name="" value="Перемножить"><br>
</form>
</body>
</html>
explode("\r\n", $key1);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Когда создаётся куки setcookie("Cookie", "123"); Значение "123" хранится в браузере пользователя и занимает несколько байтов памяти компьютераЕсли же создаётся...
В php собираются данные и затем выводятся в json_encode в json строку, но вот беда он режет код после большого количества json символов кириллицы
Для чего нам нужен QTreeWidgetItem::setData(int column, int role, const QVariant & value), если в результате отображение данных всё равно текстовом формате? Пример использования: