[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с многомерным массивом
admrp
Есть несколько изменённый код "гостевой" с текстовым файлом переделанный для регистрации пользователей.

if(file_exists('reg_data/auth_file'))
{
$auth = unserialize(file_get_contents('reg_data/auth_file'));
$keys = array_keys($auth);
$id = max($keys) + 1;
$id = $login;
}
else
{
$id = $login;
}
foreach($auth as $double)
{
if(in_array($login, $double))
$info[] = 'Такой логин уже присутствует, укажите другой!';
if(array_search($email, $double))
$info[] = 'Такой e-mail уже присутствует, укажите другой!';
}

В переменную id пишутся не номера по порядку, а записывается логин. Не могу понять как проверить на существование его при повторном вооде
foreach($auth as $double)  {      if(in_array($login, $double))          $info[] = 'Такой логин уже присутствует, укажите другой!';

. Емаил нормально сверяется.
И к тому же оказалось, что функция print_r не показывает идентификатор массива а только ключи со значениями и получается так что обычным поиском по массиву тут не отделаться. dry.gif



Спустя 34 минуты, 27 секунд (24.06.2010 - 12:25) twin написал(а):
Цитата
И к тому же оказалось, что функция print_r не показывает идентификатор массива а только ключи со значениями

Конструкция print_r() показывает все, что находится в массиве. Вот хотелось бы взглянуть на эту распечатку.

Цитата
В переменную id пишутся не номера по порядку, а записывается логин
более чем странно, учитывая это
        $id = max($keys) + 1;
$id = $login;
Логины могут быть только числовыми?

Спустя 9 минут (24.06.2010 - 12:34) admrp написал(а):
Array ( [pwd] => 123456 [mail] => asd@mail.ru ) - вывод print_r

$id = max($keys) + 1;
$id = $login;

- я так понял что выбирается максимальное значение и увеличивается на единицу и в файле вместо числового значения записыватся строка логина

Спустя 1 минута, 12 секунд (24.06.2010 - 12:35) admrp написал(а):
a:1:{s:5:"admrp";a:2:{s:3:"pwd";s:6:"123456";s:4:"mail";s:16:"asd@mail.ru";}}
вот запись в файле

Спустя 23 минуты, 1 секунда (24.06.2010 - 12:58) twin написал(а):
Массив у тебя выглядит так
Array
(
[admrp] => Array
(
[pwd] => 123456
[mail] => asd@mail.ru
)

)


сериализованный массив так
a:1:{s:5:"admrp";a:2:{s:3:"pwd";s:6:"123456";s:4:"mail";s:11:"asd@mail.ru";}}
Не знаю с какой целью ты пытаешься меня запутать...

А теперь подумай что и к чему ты пытаешься прибавить. А потом я скажу как сделать поиск.

Спустя 6 минут, 54 секунды (24.06.2010 - 13:05) admrp написал(а):
biggrin.gif я не путаю тебя. как я написал так и есть. вот код

if(file_exists('reg_data/auth_file'))
{
$auth = unserialize(file_get_contents('reg_data/auth_file'));
$keys = array_keys($auth);
$id = max($keys) + 1;
$id = $login;
}
else
{
$id = $login;
}
foreach($auth as $double)
{
if(in_array($login, $double))
$info[] = 'Такой логин уже присутствует, укажите другой!';
if(array_search($email, $double))
$info[] = 'Такой e-mail уже присутствует, укажите другой!';
}
print_r($double);
if(count($info) == 0)
{
$auth[$id]['pwd'] = $pass;
$auth[$id]['mail'] = $email;
file_put_contents('reg_data/auth_file', serialize($auth));
header('location: http://'. $_SERVER['HTTP_HOST'] .'/index.php');
exit();

я просто пытаюсь разобраться, в чём я ошибаюсь)

Спустя 15 минут, 12 секунд (24.06.2010 - 13:20) twin написал(а):
Вот так примерно надо
						if(file_exists('reg_data/auth_file'))
$auth = unserialize(file_get_contents('reg_data/auth_file'));

foreach($auth as $log => $double)
{
if($login == $log)
$info[] = 'Такой логин уже присутствует, укажите другой!';
if($double['mail'] === $email)
$info[] = 'Такой e-mail уже присутствует, укажите другой!';
}

if(count($info) == 0)
{
$auth[$login]['pwd'] = $pass;
$auth[$login]['mail'] = $email;
file_put_contents('reg_data/auth_file', serialize($auth));
header('location: http://'. $_SERVER['HTTP_HOST'] .'/index.php');
exit();

Спустя 18 минут, 6 секунд (24.06.2010 - 13:38) admrp написал(а):
twin
благодарю! так работает, но почему print_r не показывает весь массив я, увы, не знаю, может ли это зависеть от браузера?

Спустя 2 минуты, 51 секунда (24.06.2010 - 13:41) twin написал(а):
Ты не тот смотришь.
print_r($auth);

Спустя 3 минуты, 6 секунд (24.06.2010 - 13:44) admrp написал(а):
всё, понял, при прогонке циклом вынимаются только ключи со значениями - спасибо.

Спустя 19 минут, 15 секунд (24.06.2010 - 14:03) admrp написал(а):
разобрался!


_____________
"...истина где-то рядом..."
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.