туплю, помогите с обращением к переменным

zerok

Новичок
туплю, помогите с обращением к переменным

есть функция

в ней перменная - $this_p - это массив

есть место, в котором я использую любую переменную из этой функции, имя переменной передается в функцию как $optionvalue

обращаюсь к переменной
$$optionvalue

в случае если $optionvalue = 'this_p[name]' (переданное в функцию нифига не выходит)
соотв $this_p['name'] существует и наличествует

впрочем пробовала обращаться как ${$optionvalue} один фиг...

где я неправа ?
 

HraKK

Мудак
Команда форума
Во всем. Не надо так делать.

Делайте $this_p[$optionvalue]
 

zerok

Новичок
а если мне надо обратиться не к this_p а например к $k
который просто счетчик ?

-~{}~ 09.10.07 15:31:

в случае с $k
$$optionvalue работает
 

HraKK

Мудак
Команда форума
не надо использовать $$. Никогда.

-~{}~ 09.10.07 14:32:

Опишите что вы делаете. А не как.
 

SiMM

Новичок
> имя переменной передается в функцию как $optionvalue
[m]references[/m]
 

zerok

Новичок
собственно код:

Код:
function make_select($qv, $id, $select_name, $multi='', $optionvalue='') {
	global $fildsnames;
	
	$result	= @mysql_query($qv);
	$rows  = @mysql_num_rows($result);
        $menu .= $fildsnames[$select_name]." <select name='$select_name' $multi>\n";
	if ($rows) {
		$k=0;
		while($row = mysql_fetch_row($result)){
			$k++;
			foreach($row as $i => $value) {
			$column = mysql_field_name($result,$i);
			$table = mysql_field_table($result, $i);

			$this_p["$column"] = $value;
	
			}
			if ($optionvalue) {
//				print  var_dump(${$optionvalue});
				$menu .= "<option value='".$$optionvalue."'";
				if ($$optionvalue == $id) $menu .= ' selected';
				$menu .=">".$this_p[name]."\n";

			} else {
				$menu .= "<option value='".$this_p[id]."'";
				if ($this_p['id'] == $id) $menu .= ' selected';
				$menu .=">".$this_p[name]."\n";

			}
		}
	} else {
		$menu .= "<option value=''>\n";
	}
	$menu .= "</select>\n ";

	return $menu;
	
}
 

HraKK

Мудак
Команда форума
нет никакого желания разбераться в коде, где я просил выложить код?
 

zerok

Новичок
это ответ на вопрос что я делаю

я обращаюсь к переменной через переменную.
 

HraKK

Мудак
Команда форума
Не надо так делать, еще будут вопросы?
 

zerok

Новичок
SiMM

спасибо. очень похоже на то что мне надо

-~{}~ 09.10.07 15:44:

HraKK

почему не так ?
а как надо делать если мне понадобится обратиться к $k
в качестве value
 

HraKK

Мудак
Команда форума
максимально что вы можете делать я вам уже сказал, это обращаться к значению массива через переменную $x[$y].

Вы так и не сказали зачем вам надо
а как надо делать если мне понадобится обратиться к $k
в качестве value
Поэтому я и не могу вам ответить.
 

SiMM

Новичок
Судя по беглому просмотру кода - нет никакой необходимости передавать имя переменной, достаточно передавать значение.
 

Фанат

oncle terrible
Команда форума
я не понял одного. какой смысл передавать в функцию ИМЯ переменной, если САМА эта переменная в функцию не передается?
 

zerok

Новичок
SiMM
HraKK

в некоторых случаях $optionvalue = k;

-~{}~ 09.10.07 15:55:

*****

она там образуется... вы не внимательны.

$this_p - это массив с полями sql запроса
имена этого массива зависят от $qv исполненного в функции.
 

Фанат

oncle terrible
Команда форума
странно. когда я сам баловался созданием подобных функций, ничего подобного мне не требовалось.

-~{}~ 09.10.07 15:59:

zerok, HraKK флейм прекратили. оба. без обсуждений

-~{}~ 09.10.07 16:02:

zerok
"она" создается из переменной $value.
какая проблема писать то самое $value вместо невразумительного зис_пэ?

почему нельзя сделать простую проверку, типа
if ($numericValue) $value=$k;
и все?
 

zerok

Новичок
*****

ну тогда в нее надо передавать массив а его предварительно получать , просто тут совмещено 2 в 1 .

получить данные по sql и сделать из них select

в некоторых случаях option value просто порядковый номер
а значит проще использовать $k чем городить супер запрос

-~{}~ 09.10.07 16:05:

*****
да, да. я уже пришла к этому выводу

просто не люблю большое количество условий.

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

Фанат

oncle terrible
Команда форума
у нас может быть три варианта value
1. порядковый но мер (что в случае работы с базой, на самом деле - нонсенс!)
2. id из базы (практически единственный оптимальный вариант)
3. значение поля (очень редко требуется)

какая проблема реализовать простую логику выбора из трех вариантов внутри функции?
 

zerok

Новичок
правда при этом надо держать в мозгу что $this_p['k'] не бывает
 
Сверху