我是多维数组的新手,这让我非常困扰.

我的数组如下所示:

$fields = array(
    "names" => array(
         "type"         => "text",
         "class"        => "name",
         "name"         => "name",
         "text_before"  => "name",
         "value"        => "",
         "required"     => true,
    )
)

然后我得到一个函数,判断这些输入是否被填写,是否需要.

function checkForm($fields){
    foreach($fields as $field){
        if($field['required'] && strlen($_POST[$field['name']]) <= 0){
            $fields[$field]['value'] = "Some error";
        }
    }
    return $fields;
}

现在我的问题是这条线

$fields[$field]['value'] = "Some error";

我想更改原始数组的内容,因为我正在返回它,但是如何在我的foreach循环中获得当前数组的名称(本例中的名称)?

推荐答案

In PHP, passing by reference (&) is ... controversial. I recommend not using it unless you know why you need it and test the results.

我建议你做以下几点:

foreach ($fields as $key => $field) {
    if ($field['required'] && strlen($_POST[$field['name']]) <= 0) {
        $fields[$key]['value'] = "Some error";
    }
}

所以当您需要值时基本上使用$field,当您需要更改数据时使用$fields[$key].

Php相关问答推荐

条纹 checkout :订阅试用版和额外付款(add_invoice_items)错误

Laravel 11发送邮箱时奇怪的未定义数组键名称

使用额外的输入字段自定义WooCommerce单个产品

为什么调用干预\映像引发错误驱动程序\GD\Driver not found?

PHP,ZipArchive删除一个空文件?

Laravel:让所有用户在一年中的特定月份休息几天

PHP:PHP手册-Manual

通过DO LAMP进行身份验证并从邮箱发送邮箱的最简单方式是什么

Chillerlan/php-iOS名称字段的QR vCard错误

未收到Strava WebHook事件数据

如何配置我的.env文件以在laravel的一个项目中连接两个不同的数据库?

在PHP项目中安装OpenAI PHP SDK时出现问题

在WooCommercel邮箱通知上添加来自Apaczka插件的选定交付点

调度程序不发送任何消息

如何获得没有运输等级的产品

为什么foreach循环会输出每个结果?

WooCommerce checkout 流程中基于所选选项添加自定义费用

password_verify 在 PHP 7.4 中有效,但在 PHP 8.2 中无效

mysql / sql修复多对多数据库中的行

如何在 php/laravel 中获取元素在数组中的位置