Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Массив
 
 автор: JESS   (25.07.2011 в 17:32)   письмо автору
 
 

Добрый вечер!
у меня есть массив
$board = array(null, '0', '0', '0', '0', '0', '0', 'x', '0');

как вывести все значения до Х, но не после
и все значения вместе с Х но не после?

  Ответить  
 
 автор: SHAman   (25.07.2011 в 17:40)   письмо автору
 
   для: JESS   (25.07.2011 в 17:32)
 

Это две задачи?

Первая:
foreach($board as $value)    {
    if($value == 'x')    {break;}
    print "$value<br>";
}


Вторая:
foreach($board as $value)    {
    print "$value<br>";
    if($value == 'x')    {break;}
}

  Ответить  
 
 автор: f111   (25.07.2011 в 18:25)   письмо автору
 
   для: SHAman   (25.07.2011 в 17:40)
 

это ведь не ассоциативный массив, так что for будет лучше, тем что "легче")

  Ответить  
 
 автор: psychomc   (25.07.2011 в 18:29)   письмо автору
 
   для: f111   (25.07.2011 в 18:25)
 

и на сколько наносекунд for "легче" ? 8-)

  Ответить  
 
 автор: f111   (25.07.2011 в 21:47)   письмо автору
 
   для: psychomc   (25.07.2011 в 18:29)
 

я оказался не прав((, foreach быстрее.

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

psychomc, пардон что усомнился в твоём коде)

  Ответить  
 
 автор: Valick   (25.07.2011 в 21:52)   письмо автору
 
   для: f111   (25.07.2011 в 21:47)
 

читал в нескольких статьях что for быстрее
завязывайте вы с "желтой прессой"
мое личное мнение, что подобного рода статьи заметки пишут те кому ну совсем нехрен делать
_
то что HTML быстрее, не повод завязывать с РНР ;)

  Ответить  
 
 автор: f111   (25.07.2011 в 23:43)   письмо автору
 
   для: Valick   (25.07.2011 в 21:52)
 

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

>мое личное мнение, что подобного рода статьи заметки пишут те кому ну совсем нехрен делать
знать как правильно писать тоже надо, даже в том же ассемблере, статьи оптимизации по которому тоже есть

>то что HTML быстрее, не повод завязывать с РНР ;)
1) а вот это изречение мне не понятно. (объяснения не прошу)
2) не знал что язык разметки можно сравнить с серверным

  Ответить  
 
 автор: Valick   (26.07.2011 в 00:13)   письмо автору
 
   для: f111   (25.07.2011 в 23:43)
 

огого)) оказывается хабру можно верить))
НЛО прилетело и оставило эту запись....
читайте книги молодой человек, да повнимательнее
есть один правильный форум по РНР - это софттайм, остальные лжепророки)
___
да я и не собирался объяснять, что результатом работы РНР (как впрочем и других серверных языков) является HTML(+JS и тд) код и что серверу быстрее плюнуть чистым ХТМЛ, чем сначала сформировать страницу, а затем ее отдать браузеру.

  Ответить  
 
 автор: f111   (26.07.2011 в 03:08)   письмо автору
 
   для: Valick   (26.07.2011 в 00:13)
 

всё дальше и дальше отдаляемся от темы, но не могу не ответить.

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

>есть один правильный форум по РНР - это софттайм, остальные лжепророки)
не буду говорить что хабр это нечто, я и сам туда не так часто "забредаю", но и софттайм не перехваливайте))

>да я и не собирался объяснять, что результатом работы РНР (как впрочем и других серверных языков) является HTML...

результатом работы являются обработка данных, ну а в последнюю очередь вывод (x)html, который только и требуется для приятно оформления страницы молодой человек :-P

  Ответить  
 
 автор: Valick   (26.07.2011 в 07:58)   письмо автору
 
   для: f111   (26.07.2011 в 03:08)
 

Дмитрий Котеров, Алексей Костарев "РНР 5 Наиболее полное руководство"
Максим Кузнецов, Игорь Симдянов "Самоучитель РНР5" - рекомендую начинать с этого
Максим Кузнецов, Игорь Симдянов, Сергей Голышев "РНР 5 Практика создания WEB-сайтов"
Леон Аткинсон, Зеев Сураски "РНР 5 Библиотека профессионала"
Эд Леки-Томпсон, Хьяво Айде-Гудман, Алек Коув, Стивен Д. Новицки "РНР 5 для профессионалов"
Игорь Григин "РНР 5.1 Руководство программиста"
Кристиан Дари, Богдан Бринзаре, Филип Черчез-Тоза, Михаил Бусика "AJAX и РНР Разработка динамических веб-приложений"
Тим Конверс, Джойс Парк, Кларк Морган "РНР 5 и MySQL" Библия пользователя
__
вот тема 2007года http://softtime.ru/forum/read.php?id_forum=2&id_theme=34041
сейчас точно не могу сказать все книги на другой квартире, но это далеко не все что у меня есть

  Ответить  
 
 автор: JESS   (26.07.2011 в 02:59)   письмо автору
 
   для: SHAman   (25.07.2011 в 17:40)
 

Спасибо огромное!

Но у меня снова проблема. Делаю массив через for
$key = 26, или любое число от 1 до 64.
    for ($i=$key+8; $i<64; $i+=8) {
         $moves[] = $i;
     }

Вот, а далее
if($key == $moves[0]) { $moves = 'x'; }

ТО ничего не работает. Если просисать отдельно echo $moves[0]; до выводит число, а в IF нет =(

  Ответить  
 
 автор: f111   (26.07.2011 в 03:24)   письмо автору
 
   для: JESS   (26.07.2011 в 02:59)
 

тааааааак, значит в нашей задачке дано:
$key = 26;
for ($i=$key+8; $i<64; $i+=8) 
{  
     $moves[] = $i;  
}
if($key == $moves[0]) { $moves = 'x'; }

распишем всё по порядку:
$i=$key+8 => $i=26+8=34
$i<64 => 34<64
$i+=8 => то 64-34=30, при условии что шаг у нас 8, 30/8=3.75 , в цикле 4.75 итераций, так как первый проход происходит до увеличения $i )))

1) шаг => $moves[] = $i; => $moves[0] = 34;
2) шаг => $moves[1] = 42;
3) шаг => $moves[2] = 50;
4) шаг => $moves[3] = 58;

if($key == $moves[0]) { $moves = 'x'; } => if( 26 == 34 ) { $moves = 'x'; }

мдааа, тут надо подумать....не простая задачка(

------------------------------------------
>psychomc, пардон что усомнился в твоём коде)
гыгыгы, усомнился то я в коде SHAman, а не psychomc, попутал я)))

  Ответить  
 
 автор: JESS   (26.07.2011 в 04:13)   письмо автору
 
   для: f111   (26.07.2011 в 03:24)
 

Вот весь код, по задумке, Х должен стоять у каждого 8го числа после 5. Но стоит только у 5ти.

for ($i=1; $i<65; $i++) {
   $b = da($i);
   echo $i.$b.'<br \>';
}
function da($key){
    if($key == 5) {
        for ($i=$key; $i<65; $i+=8) {
             $moves[] = $i;
         }
    }

     for ($j=0; $j<8; $j++) {
        if($moves[$j] == $key) { $b= 'X'; }
      }
      return $b;
}

  Ответить  
 
 автор: JESS   (26.07.2011 в 05:01)   письмо автору
 
   для: f111   (26.07.2011 в 03:24)
 

Только если мы заменяем $moves[] на нужное нам число.

for ($i=1; $i<65; $i++) {
   $b = da($i);
   echo $i.$b.'<br \>';
}
function da($key){
    if($key == 32) {
        for ($i=$key; $i<65; $i+=8) {
             $moves[] = $i;
         }
    }

     //for ($i=0; $i<8; $i++) {
        if(32 == $key) { $b= 'X'; }
        if(40 == $key) { $b= 'X'; }
        if($moves[2] == $key) { $b= 'X'; }
        if($moves[3] == $key) { $b= 'X'; }
        if($moves[4] == $key) { $b= 'X'; }
        if($moves[5] == $key) { $b= 'X'; }
        if($moves[6] == $key) { $b= 'X'; }
        if($moves[7] == $key) { $b= 'X'; }
        //$i = 5;
      //}
      return $b;
}

  Ответить  
 
 автор: f111   (26.07.2011 в 14:24)   письмо автору
 
   для: JESS   (26.07.2011 в 05:01)
 

ув. JESS, попробуйте сами расписать свой код/алгоритм на "бумажном носителе" :-D по моему примеру, для концентрации мыслей бывает очень полезно посидеть в "малом читальном зале", стимулируют мыслительный процесс маленький размер помещения, отсутствие интернета и телевизора, а так же не столь приятный запах хоть и свой. это мой совет!

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

  Ответить  
 
 автор: JESS   (26.07.2011 в 21:00)   письмо автору
 
   для: f111   (26.07.2011 в 14:24)
 

Большое спасибо за ответ! Очень поетично и с сорказмом. Но к сожелению, на не знаю где у меня ошибка. Готового ответа я не прошу, а просто навести на нужный след. те обьяснить разницу в цене между бананами и яблоками.

  Ответить  
 
 автор: f111   (26.07.2011 в 21:25)   письмо автору
 
   для: JESS   (26.07.2011 в 21:00)
 

>и с сорказмом
5 раз прочёл и не заметил, если вы про "малый читальный", то я сам им пользуюсь.

а теперь к делу!
смотрел, смотрел, смотрел, и снова смотрел на ваш код, логику так и не понял.
не могли бы вы мне её объяснить?

>те обьяснить разницу в цене между бананами и яблоками.
сравнение фиговенькое.

кстати вы знали что есть:
1) День яблока — праздник в Великобритании и США (21 октября и 20 февраля соответственно).
2) и фильм Бананы (режиссёра Вуди Аллена)

  Ответить  
 
 автор: JESS   (26.07.2011 в 21:48)   письмо автору
 
   для: f111   (26.07.2011 в 21:25)
 

Да, согласен что пример может и фиговенький, но со смыслом.

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

По придумманоой логике, разделил я поле на числа, от 1 до 64. Для каждой фигурки, добавил позицию, ключ от 1 до 64, те там где они будут сотять.

Посчитал что ROOK ходит вверх и вниз от места положения на следующий ход через 8 ключей. Для начала, я планирую просто отметить те места куда фугурка может ходить, а далее проверить если на пути другие фигурки, если противника, то может бить(те встать на место противника). Если нет то может стоять рядом.

Если у вас есть какие то советы на это тему буду очень рад.

  Ответить  
 
 автор: f111   (26.07.2011 в 21:50)   письмо автору
 
   для: JESS   (26.07.2011 в 21:48)
 

блин везде у вас смысл...., может это сгодится
 $jo=0;
 $b='';
 for($i=1; $i<65; $i++)
 {
    //...по задумке, Х должен стоять у каждого 8го числа после 5. Но стоит только у 5ти. 
    //если отсчёт вести от 5, то пжалста
    if($i>5) //а если от 1, то этот if надо убрать
    {
        $jo++;
        if($jo==8)
        {
            $b='X';
            $jo=0;
        }
        else
        {
            $b='';
        }
    }
      echo $i.$b.'<br \>';
 }


>Если у вас есть какие то советы на это тему буду очень рад.
есть, писать на javascripte, хотя писать вам не легче станет))

>Да, согласен что пример может и фиговенький, но со смыслом.
никакого смысла, что бы дать ответ даже вышку оканчивать не надо

  Ответить  
 
 автор: Valick   (26.07.2011 в 22:00)   письмо автору
 
   для: f111   (26.07.2011 в 21:50)
 

писать на javascripte
достаточно бредовый совет

  Ответить  
 
 автор: f111   (26.07.2011 в 22:07)   письмо автору
 
   для: Valick   (26.07.2011 в 22:00)
 

чё?))
а на php это хорошее дело?

на JS хоть будет перемещение фигур по полю, ну что бы не мошенничали пользователи о можно на php но с аяксом и всё равно "интерфейс" на js. так что либо 3 в 1, либо ничего

а лучше всего писать на флэше

Valick вам понравится играть в шахматы с обновлением страниц?

  Ответить  
 
 автор: f111   (26.07.2011 в 22:13)   письмо автору
 
   для: Valick   (26.07.2011 в 22:00)
 

>достаточно бредовый совет

аргументируйте, хочу возгордиться своей "бредовостью"

  Ответить  
 
 автор: Valick   (26.07.2011 в 22:24)   письмо автору
 
   для: f111   (26.07.2011 в 22:13)
 

нафиг нужен скрипт на стороне клиента? играть самому с собой? или вы хотите написать на JS искуственный интеллект?))
ну а про перезагрузку... никто не запрещает пользовать AJAX
хотя и с перезагрузкой не обломаемся... шахматы не терпят суеты... это вам не WoW

  Ответить  
 
 автор: f111   (26.07.2011 в 22:26)   письмо автору
 
   для: Valick   (26.07.2011 в 22:24)
 

AJAX без JS существует?

неужели искусственный интеллект "морского боя" который у вас на PHP нельзя переписать на JS ?
да, получится игра только пользователя со скриптом, но JS не умеет работать с сервером, вы же это знаете, или нет?

  Ответить  
 
 автор: Valick   (26.07.2011 в 22:39)   письмо автору
 
   для: f111   (26.07.2011 в 22:26)
 

трудно сказать, JS не единственный язык на стороне клиента, а РНР не единственный язык на стороне сервера, важна двусторонняя связь между ними, а как она будет называться это уже дело десятое

  Ответить  
 
 автор: f111   (26.07.2011 в 22:45)   письмо автору
 
   для: Valick   (26.07.2011 в 22:39)
 

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

p.s. "......связан с сервером постоянным соединением, установленным из JavaScript." http://dklab.ru/lib/dklab_multiplexor/, видимо я не прав по поводу JS

  Ответить  
 
 автор: Valick   (26.07.2011 в 23:00)   письмо автору
 
   для: f111   (26.07.2011 в 22:45)
 

и AJAX и multiplexor используют XMLHttpRequest
___
нормальный проект можно написать только на РНР без использования JS, но не наоборот
другое дело JS должен помогать в оформлении, экономии трафика и тд, но завязывать функционал на него без контроля сервера нельзя

  Ответить  
 
 автор: f111   (26.07.2011 в 23:16)   письмо автору
 
   для: Valick   (26.07.2011 в 23:00)
 

>нормальный проект можно написать только на РНР
нормальный нет

>но завязывать функционал на него без контроля сервера нельзя
f111 (26.07.2011 в 22:07)

  Ответить  
 
 автор: Valick   (26.07.2011 в 23:25)   письмо автору
 
   для: f111   (26.07.2011 в 23:16)
 

>нормальный нет
нормальный - это значит самодостаточный и рабочий, с адекватным ТЗ, без применения других технологий кроме РНР
___
давайте уже завязывать с беспредметным спором, лучше попробуйте написать хотябы крестики нолики, а потом поговорим ;)
___
аяксом и всё равно "интерфейс" на js. так что либо 3 в 1, либо ничего
я могу полюбопытствовать сколько вам лет? хочу определиться простительна ли вам подобная чушь))

  Ответить  
 
 автор: f111   (27.07.2011 в 02:55)   письмо автору
 
   для: Valick   (26.07.2011 в 23:25)
 

1) можно и дальше с вами спорить. (как вариант при не правильном ходе обновится страница и укажет на ошибку, а при JS сразу не пустит, так что прикрывайтесь вымышленным ТЗ, не прикрывайте, а нормальным назвать трудно)
2.1) согласен что засрали (простите, но так и есть, особенно я постарался)
2.2) я не болею, если как нить выучу флэешь, то может и начну придумывать чем бы себя позабавить
3.1) можете, 22, слово "интерфейс" в кавычках не спроста, а если по другому поводу то пишите на мыло, не забывайте аргументы.
3.2) аналогично интересно стало после "да я и не собирался объяснять, что результатом работы РНР (как впрочем и других серверных языков) является HTML(+JS и тд) "

  Ответить  
 
 автор: Valick   (26.07.2011 в 22:49)   письмо автору
 
   для: f111   (26.07.2011 в 22:26)
 

неужели искусственный интеллект "морского боя" который у вас на PHP нельзя переписать на JS ?
:)
да поймите вы можно и переписать (коряво без бд, но можно) только смысла в этом абсолютно нет
эих игр полно в инете и на JS и на Flash (что гораздо лучше чем на JS)... сидишь и играешт против бездушной машины
хотите играть против такого же реального человека как вы - то ядро игры (движок) должен быть на сервере

  Ответить  
 
 автор: f111   (26.07.2011 в 22:13)   письмо автору
 
   для: Valick   (26.07.2011 в 22:00)
 

.

  Ответить  
 
 автор: Valick   (26.07.2011 в 22:03)   письмо автору
 
   для: JESS   (26.07.2011 в 21:48)
 

это не так трудно, но вот проверка правельности хода
это гораздо труднее, чем вы себе представляете
вот одна из примерно 15 функций моего движка игры морской бой
<?php
function badship($kor,$point,$x,$y){
if(empty(
$kor)) {echo "отсутствует массив ячеек игрового поля"; return false;}
if(empty(
$point)) {echo "отсутствует координата выстрела"; return false;}
if(empty(
$x)||empty($y)) {echo "отсутствует размерность игрового поля"; return false;}
$r[$point]=4;
$a=1;
    if(isset(
$kor[$point-$a])){
        if(
$kor[$point-$a]==1){unset($r); $r[$point]=3; return $r;}
        if(
$kor[$point-$a]==3){
            while(isset(
$kor[$point-$a])){
                if(
$kor[$point-$a]==1){unset($r); $r[$point]=3; return $r;}
                
$r[$point-$a]=4$a++;}
        }
    }
$a=1;
    if(isset(
$kor[$point+$a])){
        if(
$kor[$point+$a]==1){unset($r); $r[$point]=3; return $r;}
        if(
$kor[$point+$a]==3){
            while(isset(
$kor[$point+$a])){
                if(
$kor[$point+$a]==1){unset($r); $r[$point]=3; return $r;}
                
$r[$point+$a]=4$a++;}
        }
    }
$a=$y;
    if(isset(
$kor[$point-$a])){
        if(
$kor[$point-$a]==1){unset($r); $r[$point]=3; return $r;}
        if(
$kor[$point-$a]==3){
            while(isset(
$kor[$point-$a])){
                if(
$kor[$point-$a]==1){unset($r); $r[$point]=3; return $r;}
                
$r[$point-$a]=4$a=$a+$y;}
        }
    }
$a=$y;
    if(isset(
$kor[$point+$a])){
        if(
$kor[$point+$a]==1){unset($r); $r[$point]=3; return $r;}
        if(
$kor[$point+$a]==3){
            while(isset(
$kor[$point+$a])){
                if(
$kor[$point+$a]==1){unset($r); $r[$point]=3; return $r;}
                
$r[$point+$a]=4$a=$a+$y;}
        }
    }
return 
$r;
}
?>

у вас все гораздо сложнее, вам практически на каждую фигуру придется писать около 5 функций, и еще кучу общих для всех фигур.
и это только для проверки корректности хода и минимум для игры одного человека с другим, если вы хотите заставить играть против человека свой сервер, то там вообще темный лес... проще всего играть по базе готовых партий
__
первая версия игры у меня была с использованием массивов, но я отказался от них в пользу БД и переписал движок с нуля (некоторые функции даже проще было реализовать), вам я тоже советую использовать БД
в вашем случае даже можно сделать 64 поля уже с названиями Е2, Е4 и тд
инициация игры - это всего лишь новая строка в БД (и даже фигуры не надо расставлять))) они вместе со значениями по умолчанию будут создаваться )
__
и еще неплохо бы разобраться в шахматной нотации
вобщем задачу довольно непростую вы себе поставили

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования