Я не знаю что такое, мыслей уже нет. Ситуация очень глупая - задаю массив: $wordList = array( 'АНДРЕЙ', 'НАТАЛЬЯ', 'ТАТЬЯНА' ); А у меня в переменную $wordList попадает слово array! о_0 Что за бред? Подскажите, пожалуйста.
Так, мне надо потом этот массив разбить на буквы и уместить в поле 10х10 Я игру "Поиск слов" пишу... Я уже и вручную индексы прописывал - не работает. Причем в этой же программе еще два похожих массива работают как положено... о_0
А буквы могут повторяться? А если букв меньше или больше ста? Какие правила игры? И вообще массив зачем? Лепи в строку. Пишу то, что первое пришло на ум, может можно и проще, но время позднее, так что мозговая деятельность минимальная: Код (Text): # непосредственно массив $wordList = array('АНДРЕЙ', 'НАТАЛЬЯ', 'ТАТЬЯНА'); # объединяем элементы массива в строку $str = implode('', $wordList); unset($wordList); # преобразуем строку в массив $chars = str_split($str); unset($str); # рисуем табличку echo '<table border=1><tr>'; for($i=0; $i<count($chars); $i++) { if(10/$i===1) { echo '</tr><tr>'; } echo '<td>'.$chars[$i].'</td>'; } echo '</tr></table>'; unset($i, $chars); Хотя может всё и не так. Изложите вкратце правила игры. з.ы.: мне совсем не нравиться эта карусель с массивом и строкой
Пользователь указывает размер поля (по умолчанию 10х10) и список слов, который надо спрятать. Программа берет слова, разделяет в массив, располагает по четырем рандомным направлениями (слева направо, справа налево, сверху вниз, снизу вверх), добавляет "контрастные" случайные буквы в пустые поля и выводит игру на экран. Буквы могут "пересекаться" в словах, ограничение на слишком длинное слово работает. Смысл в чем - игра РАБОТАЕТ, если работать со словами, введенными пользователем в форме. Массив отлично заполняется и функционирует, если его забить как: $wordList = $_POST["wordList"]; А описанная мной проблема - это массив слов по умолчанию, если пользователь не ввел свои... За советы все тут спасибо - сегодня попробую...
Не работает... Я не понимаю, я уже указывал всеми возможными способами! Причем в этой же программе рядом заданы таким способом еще 2 массива и они РАБОТАЮТ! О_0 Выкладываю весь код программы, сырой, но рабочий. Я реально хочу ПОНЯТЬ что за фигня... PHP: <?php if (isset ($_POST["wordList"]) and $_POST["wordList"] != "") { $wordList = $_POST["wordList"]; } else { $wordList = array( 'АНДРЕЙ', 'НАТАЛЬЯ', 'ТАТЬЯНА' ); } $boardData = array( width => 10, height => 10, name => "blablabla" ); if (parseList() == TRUE) { $legalBoard = FALSE; while ($legalBoard == FALSE) { clearBoard(); $legalBoard = fillBoard(); } $key = $board; $keyPuzzle = makeBoard($key); // addFoils(); $puzzle = makeBoard($board); printPuzzle(); } function parseList() { global $word, $wordList, $boardData; $itWorked = TRUE; $wordList = strtoupper($wordList); $word = split("\n", $wordList); foreach ($word as $currentWord) { $currentWord = rtrim($currentWord); if ((strlen($currentWord) > $boardData["width"]) && (strlen($currentWord) > $boardData["height"])) { echo "Слово <strong>$currentWord</strong> слишком длинное для этого паззла!"; $itWorked = FALSE; } } return $itWorked; } function clearBoard() { global $board, $boardData; for ($row = 0; $row < $boardData["height"]; $row++) { for ($col = 0; $col < $boardData["width"]; $col++) { $board[$row][$col] = "."; } } } function fillBoard() { global $word; $direction = array("N", "S", "E", "W"); $itWorked = TRUE; $counter = 0; $keepGoing = TRUE; while ($keepGoing) { $dir = rand(0, 3); $result = addWord($word[$counter], $direction[$dir]); if ($result == FALSE) { $keepGoing = FALSE; $itWorked = FALSE; } $counter++; if ($counter >= count($word)) { $keepGoing = FALSE; } } return $itWorked; } function addWord($theWord, $dir) { global $board, $boardData; $theWord = rtrim($theWord); $itWorked = TRUE; switch ($dir) { case "E": $newCol = rand(0, $boardData["width"] - 1 - strlen($theWord)); $newRow = rand(0, $boardData["height"] - 1); for ($i = 0; $i < strlen($theWord); $i++) { $boardLetter = $board[$newRow][$newCol + $i]; $wordLetter = substr($theWord, $i, 1); if (($boardLetter == $wordLetter) || ($boardLetter == ".")) { $board[$newRow][$newCol + $i] = $wordLetter; } else { $itWorked = FALSE; } } break; case "W": $newCol = rand(strlen($theWord), $boardData["height"] - 1); $newRow = rand(0, $boardData["height"] - 1); for ($i = 0; $i < strlen($theWord); $i++) { $boardLetter = $board[$newRow][$newCol - $i]; $wordLetter = substr($theWord, $i, 1); if (($boardLetter == $wordLetter) || ($boardLetter == ".")) { $board[$newRow][$newCol - $i] = $wordLetter; } else { $itWorked = FALSE; } } break; case "S": $newCol = rand(0, $boardData["width"] - 1); $newRow = rand(0, $boardData["height"] - 1 - strlen($theWord)); for ($i = 0; $i < strlen($theWord); $i++) { $boardLetter = $board[$newRow + $i][$newCol]; $wordLetter = substr($theWord, $i, 1); if (($boardLetter == $wordLetter) || ($boardLetter == ".")) { $board[$newRow + $i][$newCol] = $wordLetter; } else { $itWorked = FALSE; } } break; case "N": $newCol = rand(0, $boardData["width"] - 1); $newRow = rand(strlen($theWord), $boardData["height"] - 1); for ($i = 0; $i < strlen($theWord); $i++) { $boardLetter = $board[$newRow - $i][$newCol]; $wordLetter = substr($theWord, $i, 1); if (($boardLetter == $wordLetter) || ($boardLetter == ".")) { $board[$newRow - $i][$newCol] = $wordLetter; } else { $itWorked = FALSE; } } break; } return $itWorked ; } function makeBoard($theBoard) { global $boardData; $puzzle = ""; $puzzle .= "<table border=0>\n"; for ($row = 0; $row < $boardData["height"]; $row++) { $puzzle .= "<tr>\n"; for ($col = 0; $col < $boardData["width"]; $col++) { $puzzle .= " <td width=15>".$theBoard[$row][$col]."</td>\n"; } $puzzle .= "</tr>\n"; } $puzzle .= "</table>\n"; return $puzzle; } function addFoils() { global $board, $boardData; for ($row = 0; $row < $boardData["height"]; $row++) { for ($col = 0; $col < $boardData["width"]; $col++) { if ($board[$row][$col] == ".") { $newLetter = rand(65, 90); $board[$row][$col] = chr($newLetter); } } } } function printPuzzle() { global $puzzle, $word, $keyPuzzle, $boardData; echo "<center><h1>".$boardData[name]."</h1>$puzzle"; } ?>
$wordList массив ведь. А Вы используете для его обработки функцию, которая работает со строками. жесть http://ru2.php.net/manual/ru/language.types.array.php
Не понял, в чем жесть? Вроде бы задано по всем правилам... Вы мне объясните, пожалуйста, 2 вещи: 1. Почему в $wordList попадает слово array, хотя все вроде правильно, и массивы заданные таким же способом в этой же программе работают на ура. Ладно бы массив не создавался вообще, не работал, или был пустым, но причем тут array? Это по какой такой логике? 2. Почему тот же самый массив, переданный из формы работает? Обрабатывается он точно так же...
массив задается словом array ты хочеш вывести массив (список элементов), не указав к какому конкретно обращаешся. php не знает какой те нужен и поэтому предупреждает что это array