Всем доброго времени суток! Впервые коснулся массивов в php и сразу трудности... Пытаюсь записать в массив данные из БД, но данные не сохраняются... подскажите хотя бы направление - что не так? Вот мой код: Код (PHP): $z = 1; // Счетчик для ключей массива $query = mysql_query("SELECT id_card, owner FROM `game_4x4` WHERE id_game='$id_game'"); while($row = mysql_fetch_array($query)){ $idcard = $row['id_card']; $owner = $row['owner']; $M_owner = array ($z=>$owner); $z++; } Если попытаться обратиться к элементу массива ни чего не выводит - пустота Вот как обращаюсь: Код (PHP): echo "<br>M_owner = ".$M_owner[1].""; Массив почему то не заполняется а остается пустым, значение сохраняется только на 1н цикл и то для конкретного ключа... Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
Если бы попытке что-то куда-то записать предшествовало изучение языка, то было бы написано Код (PHP): $M_owner[$z] = $owner; поскольку строчка Код (PHP): $M_owner = array ($z=>$owner); перезаписывает содержимое переменной $M_owner на массив из одного элемента. А та строчка, что я привёл - создаёт новый элемент (или перезаписывает старый, если он существует, что в данном случае не так) с индексом $z.
Я решил написать игру покер - интересно как она работает, так сказать "изнутри". В БД у меня хранится колода карт 36шт, конкретной игры. таблица выглядит так: id id_game id_card number suit(масть) status owner(владелец) пример: 1 1 1 6 пики обычная колода 1 1 2 6 буби обычная колода 1 1 3 6 крести козырная колода и тд. На данный момент владельцем карты является колода (карты не розданы). Задача 1(на данный момент). Раздать к примеру по 6 рандомных карт четверым игрокам, тем самым присвоить к каждой карте нового владельца пример: 1 1 1 6 пики обычная Игрок1 1 1 2 6 буби обычная колода 1 1 3 6 крести козырная Игрок2 и тд. И так мы приближаемся к сути проблемы - если я буду брать радномное число от 1 до 36 и соответствующей id_card присваивать владельца, то будут попадаться одинаковые числа. Мне нужно сделать проверку - не была ли карта уже присвоена. Если я буду каждый раз отправлять запрос в БД с рандомным числом и проверять не была ли присвоена эта карта - это будет колапс... Поэтому я решил дублировать колоду из БД в массив и делать проверку там, если карта не повторяется то присваивать ее владельцу если повторилась то искать следующую карту. Вот такая дикая история ))) А дальше я пытался сделать так но не получилось: Код (PHP): $z = 1; // Счетчик для ключей массива $query = mysql_query("SELECT id_card, owner FROM `game_4x4` WHERE id_game='$id_game'"); while($row = mysql_fetch_array($query)){ $idcard = $row['id_card']; $owner = $row['owner']; $M_owner = array ($z=>$owner); $z++; } Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
Спасибо mkramer(у), моя ошибка была в том что я не осознавал что $M_owner это всего лишь переменная а не массив. Я думал что если написать $M_owner = array (1=>'значнеие') то $M_owner будет уже массивом. Спасибо за разъяснения и помощь! Вот что у меня получилось в итоге - все работает как и хотелось: Код (PHP): $z = 1; \\ Счетчик для ключей массива $query = mysql_query("SELECT id_card, owner FROM `game_4x4` WHERE id_game='$id_game'"); while($row = mysql_fetch_array($query)){ $idcard = $row['id_card']; $owner = $row['owner']; $M_owner[$z] = $owner; $z++; } Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
После этого оператора в переменном $M_owner будет массив с одним значением. Но этот оператор не добавляет новое значение. Вот в чём разница, а то что вы написали - бред. Почитайте https://secure.php.net/manual/ru/language.types.array.php