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

Форум PHP

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

 

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

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

тема: in_array() expects parameter 2 to be array, null given
 
 автор: Port_Artur3   (20.03.2016 в 09:10)   письмо автору
 
 

Функция заполнения массива $array_r случайными (уникальными) числами.

function unic_rnd($start, $end, $count){
 global $banners;
 $array_r = array();
 $array_r =$banners;
 $i=0;
   while($i++<$count){
    $rnd = rand($start, $end);

128:      if(!in_array($rnd, $array_r, true)){
         $array_r[] = $rnd;
       }

         else{
        $count=$count+1;
       }
   }
return $array_r;
}


При обычном вызове файла .php - всё работает без ошибок.

А при включении через include выпадает ошибка:

Warning: in_array() expects parameter 2 to be array, null given in /home/public_html/banner.php on line 128

128:      if(!in_array($rnd, $array_r, true)){


Почему возникает ошибка?

  Ответить  
 
 автор: confirm   (20.03.2016 в 14:21)   письмо автору
 
   для: Port_Artur3   (20.03.2016 в 09:10)
 

А чему $array_r у вас в итоге равен? И зачем, если он равен $banners, и $banners это массив, вот это промежуточное чудо - $array_r = array();? А равно null, потому как при обращении global $banners; не определен.

  Ответить  
 
 автор: Port_Artur3   (20.03.2016 в 14:36)   письмо автору
 
   для: confirm   (20.03.2016 в 14:21)
 

$banners; - это массив с 1 или 2-я элементами, он определён ранее. А global $banners; я делаю чтобы передать его в функцию.
Поэтому $array_r первоначально это массив с теми же сами 1-м или 2-мя элементами, которые находятся в $banners;

Ошибка-то возникает только когда делаю include "banner.php";

а при вызове самого banner.php через адресную строку таких ошибок нет.

  Ответить  
 
 автор: Port_Artur3   (20.03.2016 в 22:55)   письмо автору
 
   для: Port_Artur3   (20.03.2016 в 14:36)
 

Массив $array_r первоначально не пустой, он всегда содержит один элемент:

Array ( [0] => 6 )


Тогда откуда ошибка?

  Ответить  
 
 автор: Trianon   (21.03.2016 в 01:10)   письмо автору
 
   для: Port_Artur3   (20.03.2016 в 22:55)
 

у Вас значение $banners не задано. Отсюда и ошибка.

  Ответить  
 
 автор: Port_Artur3   (21.03.2016 в 08:46)   письмо автору
 
   для: Trianon   (21.03.2016 в 01:10)
 

$banners всегда содержит 1 элемент:

Array ( [0] => 6 )

, именно его я передаю в функцию, делая $banners глобальным, чтобы передать массиву $array_r .

  Ответить  
 
 автор: confirm   (21.03.2016 в 12:30)   письмо автору
 
   для: Port_Artur3   (21.03.2016 в 08:46)
 

Будем дебаты разводить или может проверить все-таки тип? И досконально изучить подключение, что нужно учитывать при этом.

  Ответить  
 
 автор: Port_Artur3   (21.03.2016 в 13:08)   письмо автору
 
   для: confirm   (21.03.2016 в 12:30)
 

А как мне проверить тип, и чего именно?

  Ответить  
 
 автор: confirm   (22.03.2016 в 15:00)   письмо автору
 
   для: Port_Artur3   (21.03.2016 в 13:08)
 

<?
include 's.php';
$a 3;


Вопрос - если в файле s.php есть обращение к $a, то чему она будет равна при этом?

http://fi2.php.net/manual/ru/book.var.php

  Ответить  
 
 автор: Port_Artur3   (22.03.2016 в 21:37)   письмо автору
 
   для: confirm   (22.03.2016 в 15:00)
 

Я не передаю или принимаю переменную в include файл. Hеверное понимание вопроса. Всё происходит в самом файле который я подключаю.

Короче, избавился от функции и всё заработало.

  Ответить  
 
 автор: confirm   (23.03.2016 в 14:00)   письмо автору
 
   для: Port_Artur3   (22.03.2016 в 21:37)
 

А никто и не говорил, что вы передаете в подключаемом файле. Вы даже сути не поняли, а суть проста - переменные используемые в подключаемом файле должны быть определены до подключения, а у вас в момент подключения ваш массив, который вы делаете глобальным не существует.

  Ответить  
Rambler's Top100
вверх

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