首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP foreach更改原始数组值

PHP foreach更改原始数组值
EN

Stack Overflow用户
提问于 2013-02-22 20:47:39
回答 4查看 216.8K关注 0票数 169

我对多维数组非常陌生,这让我很头疼。

我的数组如下:

$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循环中获得当前数组的名称(本例中的名称)?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-22 20:51:31

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]

票数 302
EN

Stack Overflow用户

发布于 2013-02-22 20:48:35

使用foreach($fields as &$field){ -这样您就可以使用原始数组了。

Here更多的是通过引用传递。

票数 15
EN

Stack Overflow用户

发布于 2013-02-22 20:56:25

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

这是我建议通过引用传递的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15024616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档