Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Ошибка PHP - foreach (https://javascript.ru/forum/server/13987-oshibka-php-foreach.html)

ВэйДлин 22.12.2010 23:28

Ошибка PHP - foreach
 
Выдаёт ошибку:

Warning: Invalid argument supplied for foreach() in /.../index.php on line 114

Warning: Invalid argument supplied for foreach() in /.../index.php on line 114

Вот кусок кода:
function ParseCookie( $data ) {
		$cookie = parseall( $data, 'Set-Cookie: ', ';' );
		if( count( $cookie ) > 0 ) {
			foreach( $cookie as $c ) {
				list( $keyCookie, $valCoolie ) = explode( '=', $c, 2 );
				$cookie[ $keyCookie ] = $valCoolie;
			}
		}
	}
	
	function getStrCookie() {
		$strCookie = '';
		foreach( $cookie as $keyCookie => $valCoolie ) {
			$strCookie .= "{$keyCookie}={$valCoolie}; ";
		}
		$strCookie = substr( $strCookie, 0, strlen( $strCookie ) - 2 );
		return $strCookie;
	}

В данном случае это 13 строка, что может быть не так??

Gvozd 22.12.2010 23:47

перевести описание ошибки, и погуглить что означает данная ошибка - религия не позволяет?!
отдебажить в конце-концов

к моменту выполнения 13-й строки переменная $cookie не существует, а значит не является массивом
а перебирать можно толь ко массивы

ВэйДлин 22.12.2010 23:54

Я переводил, просто раньше этот скрипт был классом php, щас порылся в изначальном коде и там была такая строка
var $cookie = array();

Ставлю её и снова выдаёт ошибку.

B@rmaley.e><e 23.12.2010 00:02

В php var для объявления переменных не нужен. Да и вообще не нужен.

P.S. Но проблема не в этом. Читайте про локальные / глобальные переменные.

Gvozd 23.12.2010 00:04

потому что, все еще:
Цитата:

Сообщение от Gvozd
к моменту выполнения 13-й строки переменная $cookie не существует, а значит не является массивом
а перебирать можно толь ко массивы

знаете, есть такая классная функция: var_dump
она позволяет вывести перменную.
и вы сможете глянуть, массив она, или что.
в данном случае она будет NULL, что в данной ситуации означает что она не объявлена.

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


Часовой пояс GMT +3, время: 08:19.