В чем может быть ошибка ?

Nick88Hello

Новичок
Здесь представлен каркас кода , проблема в том ,что происходит или зацикливание или переменная $p не увеличивается до 2
PHP:
<?php
#Алгоритм работы :
/*
 - При ПЕРВОМ вызове do_something()
 $var = ?text="Параметр" с ней делаются
 какие-то манипуляции , затем ф-ция возвращает аргумент и др. данные
 - полученные данные записываются в файл
 после этого вызывается ф-ция IncreaseVariable() на этом
 первая интерация скрипта окончена , но если $p != 2
 нужно: 
 - опять вызвать do_something()
 Но при втором и последующих вызовах ,эта ф-ция
 должна использовать $var = ?text="Параметр"&p="значение"
 - опять обработать полученные данные
 - опять записать их в файл
 - опять $p++ (пока $p != 2)
 Если $p = 2 - Работа выполнена!
 Если do_something() вернула false - error
*/
 function do_something($arg){
    if($arg == ''){
    echo'Введите аргумент функции !';
	
	return false;
	}else{
/*Переменная $var при ПЕРВОМ ВЫЗОВЕ 
функции должна иметь вид : ?text="Параметр"*/
		 $GLOBALS['var'].= $arg;
	     $data['arg'] = $arg;
		 
	     return $data; 
		 }
    }
    function IncreaseVariable(){
    static $p = 0;
    $p++;
	
    return $p;
     }
	 $result = do_something('дирижабль');
	 $var = '?text=';
     if($result!= false){
//Выполнить что-то
/*
Только после того , как полученные данные от ф-ции
были обработаныи записаны - $p++
*/	
    $p = IncreaseVariable();
	while( $p != 2 ){
/*Здесь нужно : добавить к переменной $var новый параметр - p
и инкрементировать его до тех пор , пока не будет равен 2
Таким образом , переменная $var должна иметь вид : ?text="Параметр"&p="значение"
После каждой интерации цикла ,$var передается функции do_something()
*/

		 $result = do_something($result['arg']);
		 $var .= '&p='.$p;
		 echo $var;
		 
	     }
//Сюда нужно попадать лишь  когда $p = 2
		 echo 'Работа выполнена!';
		 unset($p);
		 exit;
		 
	}else{
//Выполняется , если функция do_something() вернула false
	 echo'Произошла ошибка';
	 exit;
	}
?>
 

radioheaded

PHP нуб
Вы угадали, проблема в том, что переменная не увеличивается до двух, так как инкрементируется с нуля ровно один раз.
 

AmdY

Пью пиво
Команда форума
здесь куча ошибок. тебе нужно разобраться с областью видимости переменных. а переменная $p объявлена внутри функции.
 

Nick88Hello

Новичок
Переменная $p - статическая


function IncreaseVariable(){
static $p = 0;
$p++;

return $p;
}

Поэтому она должна запоминать свои значения
 

AmdY

Пью пиво
Команда форума
radioheaded
точно, просмотрел $p = IncreaseVariable();
тогда всё просто, нужно эту строку опустить во внутрь while цикла
 
Сверху