Доброго дня. Исходные данные: В базе сервера1 хранятся записи: ДатаВремя, НомерТелефона1, НомерТелефона2 На FTP сервере2 хранятся записи телефонных разговоров в формате ДатаВремя.gsm. В некоторых случаях файлы создаются на одну секунду позже, чем запись в базе, т.е. ДатаВремя+1сек.gsm. Делаю проверку на существование фала ДатаВремя.gsm. Если он есть, то вывести ДатаВремя.gsm, в противном случае вывести ДатаВремя+1сек.gsm. И вот здесь получаю проблему. Выводится только ДатаВремя+1сек.gsm. И выдает ошибку in_array() expects parameter 2 to be array, boolean given. Подскажите пожалуйста, в чем проблема. Ниже код: Код (Text): <?php ini_set('display_errors',1); error_reporting(E_ALL); require_once('header.php'); echo "<div align='center'>"; echo "<form name=searchdate method=POST action=''>"; echo "<br>Год <input type='text' name='date_y' size='4' maxLength='4' value='";echo date('Y');echo "'>"; echo "Месяц <input type='text' name='date_m' size='2' maxLength='2' value='";echo date('m');echo "'>"; echo " <input type='submit' name='show' value='Показать'>"; echo "</form></div>"; if(isset($_POST['show'])) { $ftp_server="ftp_host"; $ftp_user = 'ftp_user'; $ftp_pass = 'ftp_pass'; $sql_server="sql_server"; $sql_user = 'sql_user'; $sql_pass = 'sql_pass'; $link = ibase_connect($sql_server, $sql_user, $sql_pass); $result = ("select EXTRACT(YEAR from calldate),EXTRACT(MONTH from calldate),EXTRACT(DAY from calldate),EXTRACT(HOUR from calldate),EXTRACT(MINUTE from calldate),EXTRACT(SECOND from calldate),billsec,dst from ast_cdr where EXTRACT(YEAR from calldate)='$_POST[date_y]' AND EXTRACT(MONTH from calldate)='$_POST[date_m]' and dst='89636953400' and billsec>'0' --order by calldate desc"); $sth = ibase_query($link, $result); // connect to server $conn_id=ftp_connect($ftp_server); // inter to server with $ftp_user and $ftp_pass $login_result=ftp_login($conn_id, $ftp_user, $ftp_pass); // check connection if ((!$conn_id) || (!$login_result)) { echo "Could not connect to server $ftp_server"; exit; } ftp_pasv ($conn_id, true) ; echo "<table cellspacing='0' cellpadding='5' valign='top' align='center' bordercolor='grey'>"; echo "<tr class='d0'><td><b>Дата</b></td> <td><b>Время</b></td> <td><b>Длительность</b></td> <td><b>Файл</b></td> </tr>"; while ($cliprow = ibase_fetch_row($sth)) { // добавляем ноль там, где необходимо $month = strlen($cliprow[1]); if ($month == '1') $cliprow[1] = '0'.$cliprow[1]; $day = strlen($cliprow[2]); if ($day == '1') $cliprow[2] = '0'.$cliprow[2]; $hour = strlen($cliprow[3]); if ($hour == '1') $cliprow[3] = '0'.$cliprow[3]; $minute = strlen($cliprow[4]); if ($minute == '1') $cliprow[4] = '0'.$cliprow[4]; $cliprow[5] = str_replace('.0000', '', $cliprow[5]); $second = strlen($cliprow[5]); if ($second == '1') $cliprow[5] = '0'.$cliprow[5]; $date = $cliprow[0].$cliprow[1].$cliprow[2]; $time = $cliprow[3].$cliprow[4].$cliprow[5]; $cdt = '4956411000'; $dst = $cliprow[7]; echo "<tr class='d1'><td> $cliprow[0]-$cliprow[1]-$cliprow[2] </td> <td> $cliprow[3]:$cliprow[4]:$cliprow[5] </td> <td> $cliprow[6] </td> "; $path = '/Record/$date/'; $file = '$date-$time-$cdt($dst).gsm'; $check_file = $path.$file; $contents = ftp_nlist($conn_id, $path); if (in_array($check_file, $contents)) { echo "<td><a href='ftp://$ftp_user:$ftp_pass@$ftp_server/Record/DAHDI/r1/$date/$date-$time-$cdt($dst).gsm'><img src='img/disk_1641.png'></a></td>\n"; } else { $cliprow[5] = $cliprow[5] + 1; $date = $cliprow[0].$cliprow[1].$cliprow[2]; $time = $cliprow[3].$cliprow[4].$cliprow[5]; echo "<td><a href='ftp://$ftp_user:$ftp_pass@$ftp_server/Record/DAHDI/r1/$date/$date-$time-$cdt($dst).gsm'><img src='img/disk_4985.png'></a></td>\n"; } //ftp_close($conn_id); } ibase_free_result($sth); ibase_close($link); } echo "</tr></table></br></br>"; require_once('footer.php'); ?>
проблемы же выражена текстом - in_array() expects parameter 2 to be array, boolean given. http://php.ru/manual/function.in-array.html
У меня не получается сопоставить текст ошибки с указанным мануалом. Ошибку читаю как "ожидается параметр два для массива...". Если имеется ввиду параметр "true"?
Для начала проверяйте, является ли $contents массивом и не равен ли его размер нулю. is_array(); sizeof()
Сделал проверку is_array() Код (Text): if(is_array($contents)) { echo "array"; } else { echo "not array"; } Выяснилось, что $contents не является массивом... И тут возникает вопрос. Почему в одном случае $contents не является массивом, а в другом $contents это массив