Использовать данные массива, сохраненные в файле TXT (PHP) - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь использовать данные, сохраненные в list.txt, через форму отправки и отображать ее случайным образом на странице.

index. php

<?php
    //$list = file_get_contents('list.txt'); //Tested without fopen

    $myfile = fopen('list.txt', "r") or die ("");

    $list = fread($myfile,filesize('list.txt'));

    $bg0 = array($list ,'yellow'); // array of colors

    fclose($myfile);

    $i = rand(0, count($bg0)-1); // generate random number size of the array
    $selectedColor = "$bg0[$i]"; // set variable equal to which random color was chosen

    echo selectedColor;
?>

list.txt

'red', 'blue', 'green'

Ответы [ 3 ]

1 голос
/ 21 января 2020

Я не совсем уверен, чего вы здесь добиваетесь, но у вас есть несколько проблем:

1) selectedColor

должно быть $ selectedColor

2) loading массива.

Вы не можете просто загрузить текст и ожидать, что php угадывает формат. Если вы хотите загрузить файл и обработать его как массив, вам нужно указать php.

В вашем примере вы можете, например, разбить текст и обрезать нежелательные символы:

  $list = explode(',', $list);
  array_walk($list, function(&$elem) {
    $elem = trim($elem, ' \'');
  });

3) $ selectedColor = $ bg0 [$ i];

Заменить:

$selectedColor = "$bg0[$i]";

на:

$selectedColor = $bg0[$i];

4) массив pu sh

Эта строка неверна:

$bg0 = array($list ,'yellow'); // array of colors

Замените ее на:

$bg0 = array_merge($list, ['yellow']); // array of colors

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

Так, например:

<?php

  //$list = file_get_contents('list.txt'); //Tested without fopen

  $myfile = fopen('list.txt', "r") or die ("");

  $list = fread($myfile,filesize('list.txt'));

  $list = explode(',', $list);
  array_walk($list, function(&$elem) {
    $elem = trim($elem, ' \'');
  });

  $bg0 = array_merge($list , ['yellow']); // array of colors

  fclose($myfile);

  $i = rand(0, count($bg0)-1); // generate random number size of the array
  $selectedColor = $bg0[$i]; // set variable equal to which random color was chosen

  echo $selectedColor;
  ?>
0 голосов
/ 21 января 2020
  • Вам необходимо разделить входные значения. Это может быть просто сделано с помощью регулярных выражений.
  • После этого добавьте «желтый» в список
  • Выберите случайный цвет
$data = "'red', 'blue', 'green'";
preg_match_all("/'(.*?)'/", $data, $matches);
$list = $matches[1];

$list[] = 'yellow';
$i = rand(0, count($list)-1);
$selectedColor = $list[$i];

echo $selectedColor;
0 голосов
/ 21 января 2020

Вам необходимо преобразовать строку в массив с помощью explode(), а затем добавить дополнительные элементы, если необходимо:

    $list = fread($myfile,filesize('list.txt'));
    fclose($myfile);

    $bg0 = explode(', ',str_replace("'","",$list));
    $bg0[] = 'yellow';
    $i = rand(0, count($bg0)-1); // generate random number size of the array
    $selectedColor = "$bg0[$i]"; // set variable equal to which random color was chosen

    echo $selectedColor;
...