Я новичок в PHP, и пытаюсь решить некоторые HackerRank проблемы в PHP.
Когда я включил вектор Класс, как описано в этот пост, я получил следующую ошибку:
Предупреждение PHP: требуется (php-ds.php): не удалось открыть поток: такого файла или каталога в файле решений.php нет в строке 2
Неустранимая ошибка PHP: require (): Не удалось открыть требуемый файл php-ds.php (include_path = ‘.: / Usr / share / php’) в solution.php в строке 2
Это потому, что на сайте нет такого класса? Или я что-то пропустил? Есть ли способ, которым мы можем использовать «встроенный» вектор в PHP?
Мой код выглядит так:
<?php
require("php-ds.php");
function xorAndSum($a, $b) {
$la = strlen($a); $lb = strlen($b);
define("SHIFT", 10);
$bufferArray = new \Ds\Vector();
$bufferArray->allocate($lb+SHIFT);
$result = 0;
return $result;
}
$fptr = fopen(getenv("OUTPUT_PATH"), "w");
$stdin = fopen("php://stdin", "r");
fscanf($stdin, "%[^\n]", $a);
fscanf($stdin, "%[^\n]", $b);
$result = xorAndSum($a, $b);
fwrite($fptr, $result . "\n");
fclose($stdin);
fclose($fptr);
В PHP обычно лучше включать файлы, используя их полный путь.
Самый простой способ достичь этого — делать;
require(__DIR__ . "/php-ds.php");
__DIR__
возвращает каталог файла, в котором вы сейчас находитесь. Так, например, если я редактировал c:\www\example.php
это вернется c:/www
,
Ты можешь использовать ../
пойти вверх по каталогу.
Линия: require("php-ds.php");
просит PHP найти файл в той же директории, в которой находится ваш скрипт, а затем убедиться, что он включен в скрипт, иначе он потерпит неудачу. (в этом разница между «требовать» и «включать»).
Во-первых, убедитесь, что в той же директории, что и скрипт, который вы здесь пишете, есть файл php-ds.php. Если нет, это не сработает. Если он находится в другой папке, вам нужно указать require()
утверждение по правильному пути, т.е. если его в каталоге выше, вы бы использовали:
require '../php-ds.php';
или если это в подкаталоге:
require 'subdir/php-ds.php';
надеюсь, это поможет