php - 未定义的偏移量:最新版本升级后 WordPress 中的 0
问题描述
我的 WordPress 驱动的网站一直运行良好,但是在最新升级到 5.6.2 和 5.7 后,我遇到了一个实际上破坏了网站重要部分的重大问题,我查看了日志并发现了以下错误:
[14-Mar-2021 00:29:32 UTC] PHP Notice: Undefined offset: 0 in /var/www/html/wp-content/plugins/tours/includes/class-tours-tour-post-type.php on line 1709
[14-Mar-2021 00:29:32 UTC] selected_original_tours:
有问题的代码似乎如下:
if($show_filter) {
$selected_destinations = isset($_GET['destinations']) ? explode(',', $_GET['destinations']) : [];
$selected_tourstyles = isset($_GET['tourstyles']) ? explode(',', $_GET['tourstyles']) : [];
write_log('selected_original_tours: ' . $selected_tourstyles[0]);
for($i = 0; $i < count($selected_tourstyles); $i++) {
$selected_tourstyles[$i] = str_replace('and', '&', $selected_tourstyles[$i]);
$selected_tourstyles[$i] = str_replace('_', ' ', $selected_tourstyles[$i]);
write_log('Selected_tourstyles:' . $selected_tourstyles[$i]);
}
$selected_dates = isset($_GET['dates']) ? explode(',', $_GET['dates']) : [];
}
有问题的行将是这一行:
write_log('selected_original_tours: ' . $selected_tourstyles[0]);
我该如何解决这个问题或更改受影响的代码以使我的功能再次工作?一些专家的建议将不胜感激。
解决方案
我将在 for 语句中移动 write_log 并将 0 替换为 i,因此它变为:
// write_log('selected_original_tours: ' . $selected_tourstyles[0]); < 删除这一行 for($i = 0; $i < count($selected_tourstyles); $i++) { write_log('selected_original_tours: ' . $selected_tourstyles[$i]); // < 新条目。$selected_tourstyles[$i] = str_replace('and', '&', $selected_tourstyles[$i]); $selected_tourstyles[$i] = str_replace('_', ' ', $selected_tourstyles[$i]); write_log('Selected_tourstyles:' . $selected_tourstyles[$i]); }
然后,如果它不存在,则没有错误。
虽然说实话,我觉得日志的写法很奇怪。为什么需要记录选择的内容?
推荐阅读
- python - 一行:创建 dict 一行
- spring-integration - 使用 TCP FailOverConnectionFactory 是否可以进行自定义运行状况检查并在失败时回退到故障转移?
- java - (Spring) th:with 基于一个条件
- amazon-web-services - Terraform,AWS cron 语法
- sql - 将SQL表列转成句子结构
- github - Svelte 使用从 GitHub 克隆的编译器
- pandas - 如何使用带有分组和堆叠条形的 python/ploty 创建条形图?
- linux-kernel - 如果驱动程序不支持 SFP+,如何操作 10Gbit SFP+ 模块?
- swiper - Swiper 嵌套在 display:grid css 内
- java - 将用户字符串输入与文本文件中的字符串进行比较