2016-05-31 3 views
-1

У меня есть текстовый файл со следующимСохранить каждое имя пользователя и пароль в массив

имя пользователя, пароль

админ, admin123

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

[0] => имя пользователя

[1] => пароль

[2] => админ

[3] => admin123

Это мой код в данный момент:

$accounts = file("password.txt"); 

foreach($accounts as $account) { 
     $user = preg_split("/,/", $account) ; 
} 

print_r(array_values($user)); 

It похоже, сохраняет только каждую строку в массиве, а затем перезаписывает ее следующим именем пользователя и паролем.

Уточнение: Это для начинающего курса PHP, а не для фактического сайта. Я знаю, что пароли никогда не должны храниться в текстовом тексте ...

+3

Я надеюсь, что ваши пользователи знают, вы храните свои пароли в незашифрованном виде. Вероятно, вы можете использовать http://php.net/manual/en/function.str-getcsv.php, который не даст вам то, что вы просили, но должно быть полезно. – chris85

+1

Зачем вам нужен такой массив, его бесполезно – RiggsFolly

ответ

2

Сделать $user массив и добавляет значения к нему с помощью [] обозначения.

$accounts = file("password.txt"); 
$user = array(); 
foreach($accounts as $account) { 
    list($name, $pass) = preg_split("/,/", $account); 
    $user[] = $name; 
    $user[] = $pass; 
    // Or use array_push($user, preg_split("/,/", $account)); 
} 
print_r(array_values($user)); 

Пояснение: Для того, чтобы установить определенный ключ в массиве синтаксис является $var["key"], опуская ключевой аргумент РНР рассматривает $var[] как дописывании/толчок и добавляет значение к концу массива $var.

+0

Но это не сделает его 'array (0 => array (username, password), 1 => array (admin, admin123))' вместо 'array (0 => имя пользователя, 1 => пароль, 2 => админ, 3 => admin123) '? –

+0

@ Андрей Ты абсолютно прав, мой плохой. Обновленный пример кода, спасибо за указание на него. –

+0

Вы только что скопировали мой ответ ... –

-2

Ваш код переписывает переменную пользователя. объявите массив пользователей, как показано ниже.

$accounts = file("password.txt"); 

foreach($accounts as $account) { 
    $user[] = preg_split("/,/", $account) ; 
} 

print_r(array_values($user)); 
+1

Зачем OP использовать код ниже? *** Хороший ответ *** всегда будет объяснять, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO. –

1

Там нет необходимости в preg_split или array_values, explode и list будет делать работу, т.е .:

$accounts = file("password.txt"); 
foreach($accounts as $account) { 
     list($user[], $user[]) = explode(",", $account) ; 
} 
print_r($user); 
+1

Я думаю, что этот ответ лучше из-за использования 'list' и' explode'. Регулярное выражение является излишним для такого рода вещей. Другим вариантом вместо 'explode' является [' str_getcsv'] (https://secure.php.net/manual/en/function.str-getcsv.php), как указано в комментариях. –

Смежные вопросы