Как исправить функцию, чтобы избежать журналов ошибок (неопределенное смещение: 2 в ....) - взорваться - PullRequest
1 голос
/ 14 октября 2019

У меня есть это в моей функции:

$str = $_SERVER['REQUEST_URI']; // it gets: /cart/invisible/
$bits = explode('/',$str);
$num = $bits[2];

Проблема в том, что он возвращает ошибку mi:

Примечание PHP: Неопределенное смещение: 2 в / public_html / wp-content / themes / my-theme / functions.php в строке 3.

PS Я только что проверил информацию из "возможного дубликата", и даже подобного примера не существует.

Как я могу это исправить?

Ответы [ 3 ]

1 голос
/ 14 октября 2019

Когда вы взорвете $str, вы получите индекс, индексированный от 0 до n. При попытке доступа к недоступному индексу возникает ошибка.

$bits = explode('/',$str);
var_dump($bits);

Попробуйте var_dump, и вы сможете увидеть индексы массива после взрыва. Проверьте, имеет ли он индекс 2.

ОБНОВЛЕНИЕ

$num = isset( $bits[2] ) ? $bits[2] : "";
1 голос
/ 14 октября 2019

Если вы var_dumped переменную $bits и получили это:

array(4) { [0]=> string(0) "" [1]=> string(6) "cart" [2]=> string(14) "invisible" [3]=> string(0) "" }

, как вы прокомментировали другой ответ ... Тогда $bits[2] определенно существует.

Уведомление должноподниматься, когда код выполняется из какого-то другого контекста, тогда вы думаете. Вы должны проверить, есть ли он там в первую очередь, и если это не так, сделайте все, что подходит в вашем случае использования. А также не стоит полагаться только на bits[2]. Весь путь идентифицирует вашу конечную точку. Ну, не знаю, какова ваша общая цель, но вы должны проверить, что это invisible, только если это cart и, возможно, также, что после невидимого ничего больше нет, как /cart/invisible/xyz/, возможно, не следует идентифицировать его как вещь. ..

1 голос
/ 14 октября 2019

Индекс массива начинается с 0, поэтому вы звоните $bits[2], который не существует, так как ваш пример вернет только два элемента, попробуйте использовать как $bits[1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...