# Hat-Trik (07.04.2015 / 12:58)
Всем привет. Такой вопрос. Есть массив:
$array = array(1, 2, 3, 4, 5);
допустим, при помощи array_rand() достали значение 4, далее идёт проверка на надобность данного значения, если не подходит, то
$array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
while (count($array)) {
$key = array_rand($array);
if($array[$key] == 4){
// проверка
break;
}
unset($array[$key]);
}
# Артёмочка (07.04.2015 / 16:04)
Hat-Trik, примерно так, ток так можно уйти и в бесконечный цикл ...
[php]
$array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
while (true) {
$key = array_rand($array);
if ($key == 9) {
e
не уйдешь, элементы массива кончатся
Всем привет, как вывести данные ключа с пробелами в массиве, т.е например:
$array = array('что делаешь'=>'Ничего');
как вывести "Ничего"?
# one4zero (07.04.2015 / 20:30)
Всем привет, как вывести данные ключа с пробелами в массиве, т.е например: $array = array('что делаешь'=>'Ничего');
как вывести "Ничего"?
$array = array('что делаешь'=>'Ничего');
echo $array['что делаешь'];
Simba, а если у меня поиск ключа идет после ввода его в поле ввода?
<?Header("Content-Type: text/html;charset=Utf-8");?>
<html>
<head><title>Диалоговая система</title>
<meta name=viewport content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="style/style.css">
</head>
<body>
<center><div class="head0"><div class="head">ДИАЛОГОВАЯ СИСТЕМА</div>
<FORM method="GET" action="index.php">
<input name="q" type="text" class="r" placeholder="Напишите что-нибудь" pattern="^[А-Яа-яЁё\s]+$" title="Допустимы только кириллические символы"></br>
<input type="submit" name="otpr" value="Спросить"> <input type="reset" value="X"></p>
</form>
<div class="otv1">
<?
$q = isset( $_GET['q'] ) ? $_GET['q'] : NULL;
$q = mb_strtolower($q, 'UTF-8');
//подключение баз
require_once 'base/otvet1.php';
require_once 'base/mat.php';
require_once 'base/names.php';
$n= strtolower($q);
echo $q. '<hr>';
if ( NULL !== $n && '' !== $n ) {
$count = 0;
foreach ( array_unique( explode( ' ', strtolower( $n ) ) ) as $value ) {
// конструкция if не пропускает пустые строки
if ( '' !== $value ) {
/**
* проверка на наличие написанного текста в массиве с помощю ключа
*/
if (array_key_exists($value, $array )) {
// это количество найденных ключей (префиксный инкремент)
++$count;
echo $array[$value], ' ';
}
else if ( array_key_exists( $value, $arr ) ) {
// это количество найденных ключей (префиксный инкремент)
++$count;
echo $arr[$value], ' <br>';}
else if ( array_key_exists( $value, $names ) ) {
// это количество найденных ключей (префиксный инкремент)
++$count;
echo $names[$value], ' <br>';}
}
}
// удаляем ненужное
unset( $value );
// если префиксный инкремент = 0, то выводим этот текст
if ( !$count ) {
echo 'Не знаю. <img src="/img/nezn.png" width="10%" float="left" class="im">';
unset( $q, $count );
}
unset( $q, $count );}
else {echo 'Что-то надо ввести. <img src="/img/to.png" width="10%" float="right" class="im">';
}
// удаляем ненужное
unset( $q, $array );
?>
</div>
</div>
</center>
</body>
</html>
вот мой код
Да я уже сделал всё, не знал что так (unset($arr[$key])) удалит элемент, дальше то всё просто, функция только нужна была. спасибо
# one4zero (07.04.2015 / 20:35)
Simba, а если у меня поиск ключа идет после ввода его в поле ввода?
$q = isset( $_GET['q'] ) ? urldecode($_GET['q']) : NULL;
Так наверное
# one4zero (07.04.2015 / 21:25)
Simba, не работает чет
Проверяй какие данные приходят. Мож вообще дело не в ключе и массиве, а в другом чём-то.
one4zero,
// Это лишнее...
$q = mb_strtolower ($q , 'UTF-8' );
$n = strtolower( $q );
У тебя в explode уже стоит strtolower и не нужно его еще использовать, если хочешь чтобы искало ключи с пробелами, то поменяй знак в explode на запятую например
explode( ',' , strtolower( $n ) )
но возникает проблема, теперь уже придется ключи в запросе писать через запятую.