Как прокрутить 2 массива и определить, совпадают ли значения в каждом массиве?

Ваш веб-корень, который $_SERVER['DOCUMENT_ROOT'] в PHP, является папкой на вашей файловой системе, которую ваш веб-сервер (в данном случае, Apache) указывает на определенный хост.

Например, если вы поместите этот код в свой файл index.php и зайдите в свое доменное имя (или имя поддомена), он скажет вам ваш веб-корень.

    <?php
    header("Content-Type: text/plain;charset=UTF-8");
    die($_SERVER['DOCUMENT_ROOT']);
    ?>

Он должен сказать что-то вроде /home/some_user/public_html или /var/www. В этом случае вы хотите создать путь, который не находится внутри этого каталога.

Например: /home/some_user/config или /var/webconfig.

Вы выполняете NOT хотите сохранить его в /home/some_user/public_html/config (обратите внимание на public_html) или /var/www/webconfig (обратите внимание, что это подпапка из /var/www)

Идея хранения данных вне вашего веб-корня заключается в том, что злоумышленник не может перейти к http://yoursite.com/config/mysql.txt и получить ваши пароли. LFI и атаки на обход каталога не входят в сферу этой инициативы.

Вы также не должны проверять конфиденциальную информацию (учетные данные базы данных, ключи шифрования и т. Д.) В управлении версиями.

Как получить доступ к ним из PHP?

Это зависит от того, как кодируется ваша конфигурация.

<?php
$config = parse_ini_file('/home/some_user/config/mysql.ini');
// OR
$config = json_decode('/home/some_user/config/mysql.json');
// OR
require_once '/home/some_user/config/mysql_config.php';
?>
0
задан Isaiah 5 March 2019 в 06:27
поделиться

2 ответа

Вам не нужны две петли

for (int i = 0; i <= n; ++i) {
  if (arr1[i] == arr2[i]) {
      std::cout << "0";
  }
  else {
      std::cout << "X";
  }
}

Вы должны указать ожидаемый результат, чтобы мы знали, что вы хотите

0
ответ дан shinichi 5 March 2019 в 06:27
поделиться

Ваши циклы не сравнивают массивы бок о бок, а каждый элемент в массиве 1 сравнивается с каждым элементом в массиве 2.

Поскольку оба массива сбрасываются по arr [i] = i & amp; arr2 [j] = j, тогда они оба {0,1,2,3,4,5}.

Первая внутренняя петля будет содержать 'O' if(0==0), где i = 0 & amp; j = 0, следующие 5 внутренних циклов if(0==1..5), где i = 0 & amp; J = 1,5, являются «Х».

Проблема в следующем внешнем цикле. Правильное значение сбрасывается в значение true во время второго прохода внешней петли i = 1, но сразу же проверяется внутренняя петля if(1==0), где i = 1 & amp; j = 0, что ложно и, таким образом, устанавливает Correct в false.

Таким образом, на втором проходе через внутреннюю петлю if(1==1) верно, где i = 1 & amp; j = 1, НО во внутреннем цикле нет оператора для установки ** Вернуть обратно к истине.

Кроме того, когда X печатается в результате теста на равенство, O выводится только тогда, когда Correct все еще имеет значение true, что не является. Фактически, для каждой выходной переменной после первой будет внутренний тест на равенство, который устанавливает Correct в false перед любыми последующими тестами на истинное равенство.

Результат - один «О», за которым следует 30 «Х». Один «Х» для каждого ложного; 6 внешних петель и foreach, 5 из шести внутренних петель будут ложными. Пять из «О» просто не будут печататься, потому что «О» не печатается в результате теста на равенство.

0
ответ дан Ted D. 5 March 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: