Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: php slice
Форумы портала PHP.SU » » Если скрипт не работает » php slice

Страниц (1): [1]
 

1. 9xakep - 24 Апреля, 2012 - 20:32:29 - перейти к сообщению
В общем до этого работал только с javascript, понадобилось написать на php, сделал так: написал на js, а потом перевести в php:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $m = array(1,2,3,4,5,6,7,8,9,0)
  3. $done = array_slice($m, 0);
  4.  
  5.  
  6.   function resort($arr1) {
  7.    $did = array();
  8.  
  9.     sort1()
  10.  
  11.     function sort1() {
  12.       $i = 0;
  13.       do {
  14.  
  15.         $r1 = rand(0, $arr1.length)
  16.         $r2 = rand(0, $arr1.length)
  17.         $m1 = $arr1[$r1]
  18.         $m2 = $arr1[$r2]
  19.         $arr1[$r1] = $m2
  20.         $arr1[$r2] = $m1
  21.         array_push($did, $r1)
  22.         array_push($did, $r2)
  23.         $i += 2
  24.  
  25.       } while ($i < $arr1.length)
  26.     }
  27.   }
  28.  
  29.  
  30.   function doCheck($arr3, $arr4) {
  31.     $repeat = 0;
  32.     $max_repeat = floor($arr4.length * 0.75)
  33.     for ($i = 0; $i < $arr3.length; $i++) {
  34.       for ($k = 0; $k < $arr4.length; $k++) {
  35.         if ($arr3[$i] == $arr4[$k]) {
  36.           ++$repeat
  37.           break;
  38.         } else continue;
  39.       }
  40.     }
  41.     if ($repeat >= $max_repeat) {
  42.       resort($arr3)
  43.     }
  44.   }
  45.   resort($m)
  46.   doCheck($m, $done)
  47.   echo $m
  48.   echo $done
  49. ?>

Если есть ошибки в синтаксисе, тыкните пальцем Огорчение Сервер говорит, что ошибка в 3 строке, что там не так?
2. Данил_123 - 24 Апреля, 2012 - 20:42:29 - перейти к сообщению
3. Мелкий - 24 Апреля, 2012 - 20:43:15 - перейти к сообщению
Точка с запятой обязательны в конце строки.
4. 9xakep - 24 Апреля, 2012 - 20:46:11 - перейти к сообщению
МелкийДанил_123 Спасибо, теперь ошибка на 9ой строке, что не так с вызывом функции?
5. Данил_123 - 24 Апреля, 2012 - 20:46:50 - перейти к сообщению
вроде та же ошибка
(Добавление)
а хотя, вызов функции до ее объявления?
6. 9xakep - 24 Апреля, 2012 - 20:51:53 - перейти к сообщению
Данил_123,да, до ее объявления, в php так нельзя?
7. Данил_123 - 24 Апреля, 2012 - 20:53:52 - перейти к сообщению
точно не помню, точку с запятой поставте, проверим
(Добавление)
8. OrmaJever - 24 Апреля, 2012 - 21:05:08 - перейти к сообщению
Мелкий пишет:
Точка с запятой обязательны в конце строки.

(Добавление)
9xakep пишет:
$arr1.length

Закатив глазки

9. DeepVarvar - 24 Апреля, 2012 - 21:10:27 - перейти к сообщению
OrmaJever пишет:
count
или sizeof
(Добавление)
9xakep пишет:
$arr1, $arr2, $arr3, $arr4...
Это лишнее, в php "внутренности" ф-ции не видны из глобальной области (как и в js),
но и глобальные данные не видны внутри ф-ций (в отличии от js),
пока не напишешь явно волшебное слово global. Закатив глазки
10. 9xakep - 24 Апреля, 2012 - 21:45:48 - перейти к сообщению
DeepVarvar, извиняюсь конечно, но какой же муда**ский это php... А?! ... Я правильно понимаю, что не обязательно каждый раз писать: $? Или что это вообще, зачем он нужен мне?
11. OrmaJever - 24 Апреля, 2012 - 22:10:39 - перейти к сообщению
9xakep идея переводить js код в php изначально не правельная. Вам надо прочитать хотя бы синтаксис. Да, php очень похож на js, но в тоже время они очень разные.
Насчёт '$' то каждая переменая начинается с символа '$', вы не правельно наверно поняли, DeepVarvar написал про область видимости, в php локальная область не видит глобальную, тоесть в функции не видно переменые из "вне". Для того что бы получить глобальные переменые внутри функции нужно либо передавать их параметроами либо писать в функции

Но вариант с global не советую.

 

Powered by ExBB FM 1.0 RC1