如何在 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
)
你只需要使用 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
我有一个 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
)
你只需要使用 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