сравнение значения элементов массива

MXM

Guest
сравнение значения элементов массива

Ситуация: как определенное значение элемента массива сверить с другим значением элемента, и, при совпадении вывести определенную инфу? Массив, к примеру,
0;0;0;1;0;0;1. Допустим, нужно сверить 3-ие значение элемента массива с 6-ым.
PHP:
$fp=fopen("mxm.txt","r"); 
$fl=0; 
$i=0; 
while(!feof($fp)) 
{$cas[$i]=fgets($fp,10000); 
  $pt=explode(";",$cas[$i]); 
  if(($pt[6]==1)&&($pt[14]==$pt[6])) $fl=1; 
  $i++;} 
fclose($fp); 
if($fl>0) {include("spec1.phtml");} 
else  {include("spec2.phtml");}
Правильное ли условие? Может надо так:
PHP:
if($pt[6]&&($pt[14]==1)
 

Demiurg

Guest
>Допустим, нужно сверить 3-ие значение элемента массива с 6-ым.
if($pt[2]==$pt[5])
 

MXM

Guest
Автор оригинала: Demiurg
>Допустим, нужно сверить 3-ие значение элемента массива с 6-ым.
if($pt[2]==$pt[5])
Спаисбо, очень логичное условие по сравнению с моим. Я поправил код твоим условием:
PHP:
.
  $pt=explode(";",$cas[$i]); 
  if($pt[6]==$pt[14]) $fl=1; 
  $i++; 
.
, не могу понять, все 6-ые и 14-ые значения элементов массива строк равны нулю... условие выполняется как ВЕРНО или наоборот, делаю одну строку из всех с 6-ыи и 14-ым значением элемента массива равным еденице.... условие выполняется как ВЕРНО... и в двух случаях показывает самую последнию строчку..?
 

MXM

Guest
Автор оригинала: Demiurg
ничего не понял.
Щас, щас, постараюсь объяснить, неужели я не понятно выразился... щас...
есть стоки массивы типа
0 1 ...6 7 8 ...14 // это типа мы элементы с нуля считаем
вот сами стоки массивы в файле

0;0;...1;0;0;...1 // допустим 0 строка
0;0;...0;0;0;...1 // допустим 1 строка
0;0;...1;0;0;...0 // допустим 2 строка
0;0;...0;0;0;...0 // допустим 3 строка

я пишу
PHP:
$fp=fopen("mxm.txt","r"); // открываю файл
$fl=0;                                
$i=0;                                  
while(!feof($fp))                 
{$cas[$i]=fgets($fp,10000); // читаю строку и затем ее в массив 
  $pt=explode(";",$cas[$i]);  // разбиваю на подстроки
  if($pt[6]==$pt[14]) $fl=1;   // делаю условие на сравнение 6 значения элемента с 14-ым.
  $i++;}                                // все это в цикл
fclose($fp);                           // закрываю файл 
if($fl>0) {include("spec1.phtml");} 
/* инклюдит файл при верном уловии, при котором происходило сравнение значений, т.е. если 6-ое и 14-ое значение равно 1*/
else  {include("spec2.phtml");} // без коомментариев...
Получается, что в любом случае: равны 6-ое и 14-ое значения или не равны... все равно выполняется как ВЕРНО...
 

KostyaCat

мы где-то рядом
MXM, видимо тебе надо еще проверить равны ли 6-ой и 14-ый единице?
 

AiST

Guest
верно выполняется потому что уже в первой строке значения равны. если тебе надо, чтобы это соблюдалось во всех строках, сделай выход при первом же несовпадении.
 

MXM

Guest
Автор оригинала: KostyaCat
MXM, видимо тебе надо еще проверить равны ли 6-ой и 14-ый единице?
тогда я правильно делал условие(?):
PHP:
if(($pt[6]==1)&&($pt[14]==$pt[6]))
 

MXM

Guest
Автор оригинала: AiST
верно выполняется потому что уже в первой строке значения равны.
тогда почему выполняется условие когда в первой строке элементы 6 и 14 равны нулю.
если тебе надо, чтобы это соблюдалось во всех строках, сделай выход при первом же несовпадении.
а как? добавить
PHP:
break;
 

Demiurg

Guest
Тебе нужно определить есть ли строки удовлетворяющие условию ?
 

MXM

Guest
Автор оригинала: Demiurg
Тебе нужно определить есть ли строки удовлетворяющие условию?
Абсолютно верно. Нужно найти строку, если есть таковая, у которой значение 6-го и 14-го элемента равны еденице.
 

KostyaCat

мы где-то рядом
if($pt[6]==1 && $pt[14]==1) ???

если значение 0 или 1 тогда if($pt[6] && $pt[14])
 

Demiurg

Guest
ну тогда при нахождении надо делать break
 

MXM

Guest
Автор оригинала: KostyaCat
if($pt[6]==1 && $pt[14]==1) ???

если значение 0 или 1 тогда if($pt[6] && $pt[14])
что в первом случае
PHP:
if($pt[6]==1 && $pt[14]==1)
что во втором
PHP:
if($pt[6]==1 && $pt[14]==1)
всё работает... Спасибо. Только почему не работало при этих условиях:
PHP:
if($pt[6]&&$pt[14]==1)                      // 1-ое
if(($pt[6]==1)&&($pt[14]==$pt[6]))   // 2-ое
Разве они не равносильны...?
 

Demiurg

Guest
ну раз ты её нашел, зачем остальные проверять ?
 
Сверху