如何在 php 中重写关联数组?

How to re-write an associative array in php?

我有一个 assoc 数组,我想将其重写为一个更简单的 assoc 数组,但我不知道如何启动它。

这是我的数组:

Array
(
    [username] => Array
        (
            [notEmpty] => Please fill this field
            [alphaNumeric] => Username can only be letters and numbers.
            [between] => Username must be from 3 to 15 characters only.
        )

    [first_name] => Array
        (
            [_empty] => This field cannot be left empty
        )

    [last_name] => Array
        (
            [_empty] => This field cannot be left empty
        )

)

这是我要生成的数组:

Array
(
    "username" => "Please fill this field",
    "first_name" => "This field cannot be left empty",                                            
    "last_name" => "This field cannot be left empty"
)

抱歉,如果这可能是一个简单的问题,但我真的不知道从哪里开始,尤其是只获取数组的第一个值而不包括其他值时的逻辑。

非常感谢,非常感谢!

您可以使用 reset to get the first value of an array; use array_map 将其应用于顶级数组中的每个元素:

$data = array (
    'username' => 
    array (
        'notEmpty' => 'Please fill this field',
        'alphaNumeric' => 'Username can only be letters and numbers.',
        'between' => 'Username must be from 3 to 15 characters only.'
    ),
    'first_name' => 
    array (
        '_empty' => 'This field cannot be left empty'
    ),
    'last_name' => 
    array (
        '_empty' => 'This field cannot be left empty'
    )
);

$output = array_map(function ($a) { return reset($a); }, $data);
print_r($output);

输出:

Array
(
    [username] => Please fill this field
    [first_name] => This field cannot be left empty
    [last_name] => This field cannot be left empty
)

Demo on 3v4l.org

你只需要使用 for 循环构建数组

$framedArray=array(); $UnframedArray=array( "username"=> array ( "notEmpty" => "Please fill this field", "alphaNumeric" => "Username can only be letters and numbers.", "between" => "Username must be from 3 to 15 characters only." ), "first_name"=>array( "_empty" => "This field cannot be left empty" ),"last_name" => array ( "_empty" => "This field cannot be left empty" ), );

// print_r($UnframedArray);exit;

foreach($UnframedArray as $k=>$v){ //$k is keys , in your case your keys are username,first_name,last_name $temp=""; foreach($v as $kk=>$vv){ // to add all your key based validations if($temp==""){ $temp.=$vv; }else{ $temp.=",".$vv; }
} $framedArray[$k]=$temp;

}

预期输出: 大批 ( [用户名] => 请填写此字段,用户名只能是字母和数字。用户名只能是 3 到 15 个字符。 [first_name] => 此字段不能留空 [last_name] => 此字段不能留空 )

Blockquote