Автор Тема: Динамическая переменная в IF  (Прочитано 10470 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« : 22 Января 2006, 05:52:45 »
Привет, вопрос:

Подскажите пожалуйста, каким образом можно динамически подставлять переменную в if, когда один из параметров для сравнения передаётся за пределами функции. Мне сложно объяснить, посмотрите код. Я хотел сделать так, чтобы 4 раза не создавать условие, отдельно для kids_status, отдельно для parents_status и т. д. При этом название категорий будет использоваться и в дальнейшем, поэтому желательно заранее определить их, а семантически зависимые от них переменные создавать методом подстановки к исходному.

function status (parents_statuskids_status, ...) {
$category = array ("kids""parents""leader""about");
 if (
"$" $category["здесь перебор массива"] . "_status" == 1){
 echo (
"<html>" "и" php-код);
}
}
status (1);


"$" $category["здесь перебор массива"] . "_status" == 1
Здесь, конечно же ничего не работает:
"$" $category["здесь перебор массива"] . "_status" равно на самом деле "$kids_status" (и

т. д.)
« Последнее редактирование: 22 Января 2006, 06:03:48 от КубанГ »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #1 : 22 Января 2006, 09:38:36 »
надеюсь, когда ты проснёшься, то сам поймёшь, что это бред.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #2 : 22 Января 2006, 09:44:09 »
зачем тебе вообще знать имена переменных?
зачем что-то подставлять, собирать из кусков?
надо тебе перебрать все переданные функции параметры - ну так перебирай! Вообще не зная их имён.

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #3 : 23 Января 2006, 10:05:11 »
Цитировать
RomikChef:
надеюсь, когда ты проснёшься, то сам поймёшь, что это бред.

Мне казалось, что если бы это сработало, то было бы очень элегантным :) решением (во всяком случае для меня). Но я понял, о чём ты говоришь (надеюсь что). Смотри:

function status () { 
for (
$i 0$i <= 3$i++) {
	
	
	
if (
func_get_arg($i) == 1){
	
	
	
	
echo (
"<html>" "и" php-код); 


}
status (1110);

Самое интересное, что это работает ^_^
« Последнее редактирование: 23 Января 2006, 10:14:33 от КубанГ »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #4 : 23 Января 2006, 12:10:32 »
функция не должна выводить html код
ты создаёшь чудовищное в плане поддержки приложение.

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #5 : 23 Января 2006, 12:21:21 »
Цитировать
RomikChef:
функция не должна выводить html код ты создаёшь чудовищное в плане поддержки приложение.

В таком случае я могу вынести весь html за пределы функции, но, например, то, что я называю php-код это тоже по сути чистый html, просто "занесённый" в переменную. Насколько это будет менее вульгарно? То, что я пытаюсь сделать -- меню для сайта, которое может различаться для каждой отдельной странички. Возможно стоит попробовать Java Script, но в нём я разбираюсь ещё хуже.

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #6 : 31 Января 2006, 12:33:03 »
Ещё один вопрос в тему. А что если нужно работать с многомерным массивом? Каким образом

можно сделать его перебор в зависимости от условий?

$abc = array (
	
	
"one" => array ("a1""a2""a3"),
	
	
"two" => array ("b2""b2"),
	
	
"three" => array ("c1""c2")
	
);  

И работать с ним по тому же принципу:
 if ($i эллементпереданый через функцию 1) { 
   вывести $i эллемент многомерного массива,оформленный так-то и плюс всё, что внутри него самого (этого массива в массиве) }
else  { 

   вывести этот же эллемент многомерного массива, оформленный по другому и
    if ( $числоиереданное через функцию $порядковый номер эллемента вложенного массива) { плюс к нему, всё, что внутри него, но так же в зависимости от  условия, когда один из элементов уже второго массива отображается  отлично от остальных эллементов этого же массива (в частности из  него, например, вырезаются все html-теги)

Вот такая заковырка. Каким образом это организовать -- ума не приложу. Думал и так и так.

 foreach ($this->menu as $cKey => $category) {
	
	
echo (
"<h3>" $cKey "</h3>");
	
	
	
foreach (
$category as $link) {
	
	
	
echo (
$link);
	
	
	
}
	
	

Но здесь невозможно сделать вывод в зависимости от условий (я пробовал -- не получилось).
« Последнее редактирование: 31 Января 2006, 12:42:35 от КубанГ »

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Динамическая переменная в IF
« Ответ #7 : 31 Января 2006, 14:01:11 »
КубанГ
$array = array(...);
$num = 1;
for($i=0;$i  for($j=0;$j    if($j==$num) { //или что угодно
      echo($i." ".$j." !!!\\n");
      //do some shit
    } else {
      echo($i." ".$j."\\n");
      //do other shit
    }
  }
}

А вообще - банально почитать любые книги по программированию.
LJ: Backslashed life (rss)

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #8 : 01 Февраля 2006, 10:34:46 »
CGVictor
Прости, но ты меня не совсем правильно понял (и уж совершенно зря запозорил :() Тут моя вина: в следующий раз мне нужно более точно изъясняться. На самом деле проблема не в том, чтобы просто перебрать массивы в массиве и вывести цифры, соответствующие порядковым номерам эллементов этих массивов. Я не могу понять, каким образом вывести значения этих элементов. И если ещё возможно отобразить первый массив (см. код, впрочем, хотелось больше автоматизации) (таким образом, как ты показал -- на самом нельзя, т. к., например, первый эллемент массива это не "1", а "One" и потому простая подстановка array[$i] не подходит). А со вложенными массивами ещё сложнее (во всяком случае для меня). А твой код более "жизненно" выглядит так:
function status ($link)
{
$array = array ( 
        
"one" => array ("a1""a2""a3"), 
        
"two" => array ("b2""b2"), 
        
"three" => array ("c1""c2"
    );
for(
$i 0$i count($array); $i++) {
	
$category = array ("One""Two""Three");
	
	
if (
func_get_arg($i) == 1){
	
	
	
echo (
"<h3 style=\\"colorred\\">" $category[$i] . "</h3>");
	
	
	
for(
$j 0$j count($array[$i]); $j++) {
	
	
	
echo (
$j "
"
);
	
	
	
}
	
	
}
	
	
else{
	
	
	
echo (
"<h3 style=\\"colorgreen\\">" $category[$i] . "</h3>");
	
	
	
for(
$j 0$j count($array[$i]); $j++) {
	
	
	
	
if(
$link == $j) {
	
  
	
	
	
	
echo (
$j "
"
);
	
  
	
	
	

	
	
	
	
else {
	
	
	
	
echo (
"<a href=1>" $j "</a>
"
); 
	
	
	
	
}
	
	
	
}
	
	
}
}
}
status (101$link 2);

Важно, чтобы итоговый вывод в браузер был таким:
One
  a1
  a2
  a3
Two
  b1
  ...

Извини, если я опять чего-то не понял :)
« Последнее редактирование: 02 Февраля 2006, 09:27:24 от КубанГ »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #9 : 01 Февраля 2006, 10:42:27 »
Цитировать
КубанГ:
Но здесь невозможно сделать вывод в зависимости от условий

каких ещё условий?

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #10 : 01 Февраля 2006, 10:47:20 »
CGVictor
Цитировать
CGVictor:
А вообще - банально почитать любые книги по программированию.

[OFF]На самом деле у такого большого ламо как я, который садится за PHP, когда припрёт есть тоже очень большой учебник, который называется "Professional PHP4". С какого перепуга я его купил -- не знаю (но купил). И в критические моменты своей жизни я открываю этот талмуд и умилённо смотрю целыми днями, как баран на  новые ворота...

Вот такая печальная история...[/OFF]

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #11 : 01 Февраля 2006, 10:48:58 »
ты путаешь учебник со справочником.
Учебник открывают не в тяжкую годину.
а заранее.
чтобы научиться делать то, что ты собрался делать.

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

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #12 : 01 Февраля 2006, 10:52:55 »
RomikChef
Цитировать
RomikChef:
каких ещё условий?

Я имел ввиду то, что когда пытаешься написать примерно следующее:
if (func_get_arg($i) == 1){
   foreach (
$this->menu as $cKey => $category) { 
        echo (
"<h3>" $cKey "</h3>"); 
            foreach (
$category as $link) { 
            echo (
$link); 
            } 
        }

То в браузер выводится всё по 4 раза!  И как этим управлять, я не понимаю.

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая переменная в IF
« Ответ #13 : 01 Февраля 2006, 11:02:20 »
RomikChef
Цитировать
RomikChef:
А столкнувшись с конкретной проблемой, лезут в справочник.

[OFF]Я не думаю, что я уж настолько плох в программировании (хе-хе :)), чтобы не научиться пользоваться тем, что я понимаю и тогда, когда знаю, что и где применять. Справочник в этом определённо помогает. Но когда просто не знаешь, как действовать в той или иной ситуации и за ответами лезешь в учебник, а том всё на более или менее на общих примерах... Опыта, конечно, маловато, но чтобы его набираться надо программировать хотя бы чаще, чем раз в квартал![/OFF]

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Динамическая переменная в IF
« Ответ #14 : 01 Февраля 2006, 11:29:41 »
КубанГ
Цитировать
КубанГ:
Я не могу понять, каким образом вывести значения этих элементов.

Совсем ничего я уже тут не понимаю.
используй array_keys() и обращайся $array[$keys[$i]]...или опять не то?
LJ: Backslashed life (rss)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28