Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вывести в цикле foreach() результат поиска "да" или "нет".
 
 автор: Giga   (23.08.2006 в 20:24)   письмо автору
 
 

Сделал по примеру из этого форума

<?
 $text  
=  file 'text.txt' ); 
$keyword  =  'test';
foreach(
$text  as  $key => $string)

if( 
$keyword  ==  trim array_shift $text )))
 echo  
"$keyword найден в строке $key";
 }
  
?>
Все ок, за что спасибо автору. Но .. при

<?
 $text  
=  file 'text.txt' ); 
$keyword  =  'test';
foreach(
$text  as  $key => $string)

if( 
$keyword  ==  trim array_shift $text )))
 {
echo  
"$keyword найден в строке $key";
}
else
{
echo 
"$keyword не найден";
} }
  
?>
получил этот else = количеству строк в файле, если сто строк то и сто раз пишет "не найден, не найден, не найден, ...". Как получить в этом цикле этот else в единичном виде. Сори за мрак в голове.. Учу методом научного тыка и самый лучший учебник для меня "эксперимент".

   
 
 автор: kasmanaft   (23.08.2006 в 20:50)   письмо автору
 
   для: Giga   (23.08.2006 в 20:24)
 

можно, если найден, какой-нибудь переменной присвоить true, затем вне цикла проверить ее значение: true - найден, false - нет

   
 
 автор: DEM   (23.08.2006 в 20:52)   письмо автору
 
   для: Giga   (23.08.2006 в 20:24)
 


<?php

$text 
file('text.txt');

$keyword 'test';

foreach(
$text as $key => $string)
{
if(
$keyword == trim(array_shift($text)))
{
echo 
"$keyword найден в строке $key";
}
else
{
echo 
"$keyword не найден";
exit;
}
}

?>



В общем просто добавь EXIT; после echo "$keyword не найден"; и всё будет ОК )))

   
 
 автор: namo   (23.08.2006 в 21:58)   письмо автору
 
   для: DEM   (23.08.2006 в 20:52)
 

если у скрипта есть продолжение, помимо этого цикла, то лучше вместо exit использовать break

   
 
 автор: DEM   (23.08.2006 в 22:22)   письмо автору
 
   для: namo   (23.08.2006 в 21:58)
 

Ну расчитывалось что этот сркипт находится в конце скрипта...

   
 
 автор: Giga   (23.08.2006 в 22:38)   письмо автору
 
   для: DEM   (23.08.2006 в 22:22)
 

Получилось еще лучше. Как exit; так и break; действительно вызывают else один раз "тест не найден", но при этом в моем файле text.txt есть слово "тест", и как результат if игнорируется а выполняет else с функциями exit; break;

   
 
 автор: kasmanaft   (24.08.2006 в 00:10)   письмо автору
 
   для: Giga   (23.08.2006 в 22:38)
 

Конечно, потому что первое слово, скорее всего, в вашем файле не "тест" ... по-этому я и предлагал поступить именно так.

или же

if($keyword == trim(array_shift($text))) 

echo "$keyword найден в строке $key"; 
break;
}


// сркипт находится в конце скрипта
:))

   
 
 автор: kasmanaft   (24.08.2006 в 00:11)   письмо автору
 
   для: Giga   (23.08.2006 в 22:38)
 

-

   
 
 автор: cheops   (24.08.2006 в 02:33)   письмо автору
 
   для: Giga   (23.08.2006 в 20:24)
 

В этом случае прибегают к дополнительной переменной-флагу
<? 
  $text  
=  file 'text.txt' );  
  
$keyword  =  'test'
  
$result false;
  foreach(
$text  as  $key => $string
  {  
    if( 
$keyword  ==  trim array_shift $text ))) 
    { 
       echo  
"$keyword найден в строке $key"
       
$result true;
    } 
  } 
  if(!
$result) echo "$keyword не найден";
?>

   
 
 автор: Giga   (24.08.2006 в 14:01)   письмо автору
 
   для: Giga   (23.08.2006 в 20:24)
 

Спасибо всем за помощь. Теперь действительно все ок, true, falce помогли!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования