Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 42 из 64<  1 ... 39  40  41  42  43  44  45 ... 64  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 09.04.2006
<?
$array=array
( 'blah'=>"data1",
'blahblah'=>"data1",
"lalala" );

while (list($key,$value)=each($array)) {
echo $key . ' is ' . $value . "<br>";
}

?>
Подскажите пожалуйста, каким образом красное условие равно true? То-есть если то, что внутри скобок вообще возможно обработать - то будет тру?
То-есть в первые 3 раза конструкция list что-то делает, а на 4-ый раз значений в массиве уже нет - она не может ничего вывести и её воспринимают как FALSE? Извините если криво выразился.

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!



Партнер
 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
moty писал(а):
на 4-ый раз значений в массиве уже нет - она не может ничего вывести и её воспринимают как FALSE?

Именно так, условие стоит while( list ) и если в его параметре будет не массив то он выдаст false a each даёт ему эти массивы по очереди (а как все отдаст то перестанет и list захлебнётся)

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
Гы, по мотивам Число Пи на C#
Код:
<?php
$pres = 1000;

$pi=0;
for($i=0; $i<1000; $i++) {
   $var1 = bcdiv(4,bcadd(bcmul(8,$i,$pres),1,$pres),$pres);
   $var2 = bcdiv(2,bcadd(bcmul(8,$i,$pres),4,$pres),$pres);
   $var3 = bcdiv(1,bcadd(bcmul(8,$i,$pres),5,$pres),$pres);
   $var4 = bcdiv(1,bcadd(bcmul(8,$i,$pres),6,$pres),$pres);
   $var5 = bcsub($var1,$var2,$pres);
   $var5 = bcsub($var5,$var3,$pres);
   $var5 = bcsub($var5,$var4,$pres);
   $var6 = bcdiv(1,bcpow(16,$i,$pres),$pres);
   $var7 = bcmul($var6,$var5,$pres);
   $pi = bcadd($pi,$var7 ,$pres);
}
echo $pi;
?>

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 04.06.2007
Откуда: Ростовская обл.
Здравствуйте, я тут взялся простенький сайт делать, хотел сам во всём разобраться, но возникают глупые вопросы, может ли кто нибудь с конференции проконсультировать по аське?


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
grebennikov писал(а):
по аське

Я нет, а в топике отвечу по мере сил.

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 04.06.2007
Откуда: Ростовская обл.
Я использую такой вот скрипт для раскрывающегося меню со ссылками:
Код:
<HTML>
<head>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function doMenu(menu) {
nameDiv=eval("document.getElementById(menu)");
if (nameDiv.style.display == 'none' ) // если строка меню "сложена"( подменю не видно),
{
nameDiv.style.display = 'block'; // то она раскроется
}
else
{
nameDiv.style.display = 'none';
} }
</SCRIPT>
</head>
<BODY>
<UL>
<LI><A HREF="javascript:doMenu('menu1');" >Глава 1</A>
<UL ID="menu1" style="display: none;" > // указание, чтобы подменю не было видно
<LI><A HREF="namesite1.html">Раздел 1.1 </A></LI>
<LI><A HREF="namesite2.html">Раздел 1.2 </A></LI>
<LI><A HREF="namesite3.html">Раздел 1.3 </A></LI>
</UL>
</LI>
<LI><A HREF="javascript:doMenu('menu2');">Глава 2</A>
<UL ID="menu2" style="display: none;" >
<LI><A HREF="namesite4.html">Раздел 2.1</A></LI>
<LI><A HREF="namesite5.html">Раздел 2.2</A></LI>
</UL>
</LI>
</UL>
</BODY>

Как сделать, что бы после перехода на страницу на которую ведёт пункт меню, это меню оставалось раскрытым?


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
Вопрос 1:
Потихоньку осваиваю PHP по учебнику, я так понимаю эти данные устарели?: На сервере, где я провожу свои издевательские и противочеловечекские эксперименты PHP версии 5.1.6 и сие не работает.

Цитата:
Присваивание по ссылке

Другой способ заключается в присваивании переменной ссылки на область памяти, занимаемую другой переменной. Вместо конкретного значения переменная-приемник связывается с указателем (или ссылкой) на область памяти, поэтому фактическое копирование не выполняется.

Чтобы присвоить значение по ссылке, укажите перед именем переменной-источника символ & (амперсанд):

$dessert = "cake";

$dessert2 = $Sdessert;

$dessert2 = "cookies";

print "$dessert2 <br>"; // Выводится строка cookies

print $dessert; // Снова выводится строка cookies

Как видно из приведенного фрагмента, после связывания переменной $dessert2 со ссылкой на область памяти, занимаемую переменной $dessert, любые изменения $dessert2 приводят к автоматической модификации $dessert (и всех остальных переменных, ссылающихся на эту же область памяти).


Вопрос 2
И это я так понимаю теперь тоже не работает?
Цитата:
В некоторых ситуациях бывает удобно использовать переменные, содержимое которых может динамически интерпретироваться как имя другой переменной. Рассмотрим типичный случай присваивания:

$recipe = "spaghetti";

Оказывается, строку "spaghetti" можно интерпретировать как имя переменной — для этого в команде присваивания перед именем исходной переменной ставится второй знак $:

$$recipe = "& meatballs";

Эта команда присваивает строку "& meatballs" переменной с именем "spaghetti". Следовательно, следующие две команды выводят одинаковые результаты:

print $recipe $spaghetti;

print $recipe $($recipe);

В обоих случаях будет выведена строка "spaghetti & meatballs".


Синтаксис с двумя баксами перед именем переменной просто прибавит к ней то, что будет после знака равно?
Код:
$переменная = чтото
$$переменная = -там
Ечо "$переменная"


^^ вот это вот выведет "чтото-там"

Вопрос 3.

Ещё один простой кусок просто нокаутирует меня:

Код:
$a = 100;
$b = 50;
$с = 5;

$value22 = $а - $b - $с;
$value23 = ($а - ($b - $с));
echo " the result is $value22  second is $value23 ";


Выводит -55 и -45
Это вообще как работает?
Читаем, значит, что написано в учебнике:
Цитата:
Операторы с правосторонней ассоциативностью и одинаковым приоритетом обрабатываются справа налево. Например, фрагмент

$с = 5;

$value = $а - $b - $с;

эквивалентен фрагменту

$c = 5;

$value = ($а - ($b - $с));

При обработке этого выражения переменным $value, $a, $b и $с будет присвоено значение 5. Это объясняется тем, что оператор присваивания (=) обладает правосторонней ассоциативностью.


Отлично, значит он каким то образом присваивает что-то куда-то, притом ему неважно присвоено другим переменным значения или нет?

Ничего не понимая я повторил сюжет из учебника как можно более точно:

Код:
<?php


$с = 5;
$value = $а - $b - $с;
echo "<br> \$value is $value";


// вот эта хрень сверху должна быть эквивалентна хрени снизу:

$z = 5;
$krevedko = ($x - ($y - $z));
echo "<br> \$krevedko is $krevedko";



  ?>



Нихрена не эквивалентно! :weep: :weep: в первом случае получаем -5, во втором 5 .....
Походу, я идиот :( Или у меня brain.dll не работает?

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
вопрос 1 - на сколько я помню, работать должно
вопрос 2 - нет, работает не так.
Цитата:
$param = "param2";
$$param = "value";

двойной доллар раскрывает переменную, т.е. в этом случае на месте $$param сначала получится $param2, а затем уже выполнится $param2 = "value";
вопрос 3 - в школе на уроке про приоритеты математических операций (кажется, 2 класс, когда умножение проходят) спал?
в первом варианте 100 - 50 - 5 = 50 - 5 = 45
во втором варианте 100 - (50 - 5) = 100 - 45 = 55

то, что в скобочках, всегда выполняется перед другими операциями. умножение/деление всегда выполняется перед сложением/вычитанием.


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
ToSHiC писал(а):
вопрос 3 - в школе на уроке про приоритеты математических операций (кажется, 2 класс, когда умножение проходят) спал?
в первом варианте 100 - 50 - 5 = 50 - 5 = 45
во втором варианте 100 - (50 - 5) = 100 - 45 = 55

то, что в скобочках, всегда выполняется перед другими операциями. умножение/деление всегда выполняется перед сложением/вычитанием.


обясните мне, почему он выводит отрицательные числа. ибо я писал:
Цитата:
Выводит -55 и -45

Прописью : в первом варианте выходит минус пятьдесят пять, во втором варианте выходит минус сорок пять. Хотя должно выходить именно то, что написали вы.


В последнем-же примере в учебнике написано, что цитирую ещё раз дословно: (выделил жирным, что не так)

Цитата:
Операторы с правосторонней ассоциативностью и одинаковым приоритетом обрабатываются справа налево. Например, фрагмент

$с = 5;

$value = $а - $b - $с;

эквивалентен фрагменту

$c = 5;

$value = ($а - ($b - $с));
При обработке этого выражения переменным $value, $a, $b и $с будет присвоено значение 5. Это объясняется тем, что оператор присваивания (=) обладает правосторонней ассоциативностью.


Однако логика, математика, и выполнение кода подсказывают, что приведённые фрагменты, хоть ты убейся, не равны друг другу.

далее:
Цитата:
вопрос 1 - на сколько я помню, работать должно

Учебник, по которому я сейчас насилую вас, судя по всему оцифрован с бумаги, т.к. иногда вместо $ попадаются S, а вместо точек с запятой - двоеточия.
Делаю ctrl+c ctrl+v из учебника. исправляю 2 S, заменяю из на $:
слева код, справа - результат.
#77

В итоге:
1. Я остался без печенек.
2. Не работает.
Подскажите мне пожалуйста, где я что неправильно исправил?

Если кому интересно - первая книга отсюда:
http://php.su/books/?php

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
код показывает отрицательные цифры или в ученике отрицательные? там все переменные правильно проинициализарованны? вообще, дурацкий какой-то учебник :)

в примере про ссылки должен быть амперсанд:
Код:
$dessert2 = &$dessert;


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
ToSHiC писал(а):
код показывает отрицательные цифры или в ученике отрицательные? там все переменные правильно проинициализарованны? вообще, дурацкий какой-то учебник :)



Я попытался привести код в простейший вид, который мог, однако он по прежнему показывает -55 в качестве ответа...
Я по своей неопытности и сонливости допускаю море синтаксических ошибок, проверьте пожалуйста, может я что-то где-то не так написал?
#77
вот сам код:
Код:
<?php

$a = 100;
$b = 50;
$с = 5;

$value = $а - $b - $с;
echo "$value";

  ?>


Возникает странное чувство, что $value, которое НУЛЛ, превращает $a в точно такой-же НУЛЛ, а затем уже от него отнимаются сначала 50, а потом и 5...

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
moty писал(а):
ToSHiC писал(а):
код показывает отрицательные цифры или в ученике отрицательные? там все переменные правильно проинициализарованны? вообще, дурацкий какой-то учебник :)



Я попытался привести код в простейший вид, который мог, однако он по прежнему показывает -55 в качестве ответа...
Я по своей неопытности и сонливости допускаю море синтаксических ошибок, проверьте пожалуйста, может я что-то где-то не так написал?
#77
вот сам код:
Код:
<?php

$a = 100;
$b = 50;
$с = 5;

$value = $а - $b - $с;
echo "$value";

  ?>


Возникает странное чувство, что $value, которое НУЛЛ, превращает $a в точно такой-же НУЛЛ, а затем уже от него отнимаются сначала 50, а потом и 5...


валенок ты :) не надо пользоваться копипастом - буква "а" в выражении $value = $а - $b - $с; русская :))) включи у себя отображение ошибок, ибо у меня пыхпых сразу ругнулся:

Notice: Undefined variable: а in F:\www\test.php on line 7
-55


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
Цитата:
включи у себя отображение ошибок, ибо у меня пыхпых сразу ругнулся:


Сервер не мой... И, вроде-бы ничего страшного в том, что не назначенные переменные существуют - не надо создавать переменных что-бы просто присуждать им значение нулл, ну кроме данного случая. Или так пишут только индусы?
Сервер не мой, не могу такое включить... если ";" не находит - то говорит.. Кстати, вот я пользуюсь notepad++, а можно ли его или любой другой софт, заставить автоматически проверять правописание, например, расставленных и не расставленных ....эээ... знаков препинания?
И, кстати, спасибо тебе, ToSHiC.

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
1. все эти настройки, связанные с диагностическими ошибками, можно в рантайме менять - http://php.net/manual/en/errorfunc.configuration.php
2. не страшно, но черевато бооооольшими косяками потом, это простейший способ взлома сайтов и т.д., в общем, сразу заруби себе на носу, что это очень плохо и некрасиво.
3. на счёт правописания не уверен, но попробуй зенд студио - http://www.zend.com/en/products/studio/ . оно вроде бы даже удалённый дебаг поддерживает. ну и в качестве тренировки - поставь себе на комп комплект из апача с мускулем и пхп - это легко, немножко мануалы только почитать. зато потом уже можешь играться с php.ini так, как тебе захочется :)


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
3. Готовые пакеты а-ля денвер не вариант?

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
вариант для ленивых. имхо, устанавливая ручками, ты намного лучше поймёшь, как оно работает. потом пригодится, и не раз, когда будешь пытаться какие нибудь user friendly url делать или на хостинге будешь движок ставить, который требует определённых опций, .htaccess'ы править и т.д.


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
ToSHiC писал(а):
поймёшь, как оно работает

Не поймёшь, ручная установка на самом деле не сложнее денверовской, просто инструкции написаны/переведены обычно глуповато и создаётся ощущение сложности...

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
Почему проверка заданны ли поля формы( выделена красным) после первого раза всегда ТРУ, даже если отправлять пустую форму? ( синяя вещь всегда выполняется)

<html>

<form name="pwd" method='post' action="<?=$_SERVER['PHP_SELF']?>">
Nimi <input type="text" name="name">
Salasana <input type="password" name="pwd"> <br>
<input type="submit" name="submit" value="OK">
</form>

</html>


<?php

// проверка наличия полей имени и пвд пвд

if(isset($_POST['name'], $_POST['pwd']))
{
$name=crypt($_POST['name']);
$pwd=crypt($_POST['pwd']);


$fo = fopen("salasanat.txt", "a");

fwrite($fo, "$name $pwd \n");
fclose ($fo);
$nameverf=$_POST['name'];
Echo " <br>$nameverf is added <br>";


}
?>


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

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
для таких проверок лучше применяй !empty($varname), т.е. в твоём случае
Код:
if(!empty($_POST['name']) && !empty( $_POST['pwd']))


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
Спасибо! работает!

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 42 из 64<  1 ... 39  40  41  42  43  44  45 ... 64  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan