【问题标题】:"TypeError: implode(): Argument #2 ($array) must be of type ?array, string given" in PHP 8\"TypeError: implode(): Argument #2 ($array) must be of type ?array, string given\" 在 PHP 8 中
【发布时间】:2022-11-20 19:42:49
【问题描述】:
<div class="form-group col-md-8" id="my" style="display: none;">
    <label>Choose Vpn Server</label>
    <div class="row">
        <?php
            $sqlUrl4 = "SELECT * FROM vpn_networks";
            $result4 = myQuery($sqlUrl4);

            while ($row4 = myFetchArray($result4)) {
        ?>
        <div class="col-sm-4 text-center">
            <label>
                <input type="checkbox" name="vpn_network[]" value="<?php echo $row4['id'];?>" id="iptv" />
                <?php echo $row4['title'];?>
            </label>
        </div>
        <?php
                    }
                ?>
    </div>
</div>
$vpn1 =implode(',', $_POST['vpn_network']?? '');

错误:

Fatal error: Uncaught TypeError: implode(): Argument #2 ($array) must
be of type ?array, string given in
C:\xampp\htdocs\ideology\partnerprocess.php:22 Stack trace: #0
C:\xampp\htdocs\ideology\partnerprocess.php(22): implode(',', '') #1
{main} thrown in C:\xampp\htdocs\ideology\partnerprocess.php on line
22

【问题讨论】:

  • 你的$_POST['vpn_network']它的数组或字符串?
  • '' 绝对不是数组,这就是您收到错误消息的原因“ ...必须是数组类型,给定的字符串...”,还要确保$_POST['vpn_network']是一个数组。作为快速解决方案:将 '' 更改为 []
  • 是的,它是一个数组..
  • 执行“print_r($_POST['vpn_network'])”并在此处发布结果
  • print_r 不工作

标签: php php-8


【解决方案1】:

$_POST['vpn_network'] ?? '' 表示该值可以是您提交的数组或字符串。 $_POST['vpn_network'] ?? [] 会更有意义。

您真的不应该相信表单中提交的值。检查你的每一个假设。如果你期望一个数组而不是检查它是否是一个数组。

$vpn_network = isset($_POST['vpn_network']) && is_array($_POST['vpn_network']) ? $_POST['vpn_network'] : [];
$vpn1 =implode(',', $vpn_network);

您也可以使用filter extension。它提供了许多过滤器,可以验证来自表单的数据。

【讨论】:

    【解决方案2】:

    implode() 函数的第二个参数必须是数组。 第二个参数中已弃用非数组。

    请查看更多详情: https://www.php.net/manual/en/migration74.deprecated.php

    【讨论】:

    • 请分享有关如何解决问题的更多详细信息。错误消息已经告诉我们第二个参数必须是一个数组,并且链接到文档作为解决问题的唯一部分并不是在 StackOverflow 上回答的好方法
    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生变化,仅链接答案可能会失效。 - From Review
    猜你喜欢
    • 1970-01-01
    • 2021-05-05
    • 2018-05-02
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多