比较数组PHP的foreach循环
问题描述:
我有2个数组,我想创建一个输出数组。比较数组PHP的foreach循环
为标题和副标题领域实施例阵列的要求:
Array
(
[title] => Array
(
[required] => 1
[minLength] => 2
[maxLength] => 50
)
[subtitle] => Array
(
[required] => 1
[minLength] => 2
[maxLength] => 55
)
)
后交年代后数组:
Array
(
[title] =>
[subtitle] => s
)
示例输出数组:
Array
(
[title] => Array
(
[0] => this field is required
[1] => must be longer than 2
)
[subtitle] => Array
(
[0] => must be longer than 2
)
)
我怎样才能产生这样的阵列由一个foreach循环?
这是我的,但它不会很好。如果我留下标题空白和字幕1个字符,他会给出2次这个字段是必需的。它看起来像他重复。
class Forms_FormValidationFields {
private $_required;
private $_minLength;
private $_maxLength;
private $_alphaNumeric;
public $_errors;
public function __construct($validate, $posts) {
array_pop($posts);
$posts = array_slice($posts,1);
foreach ($posts as $postName => $postValue) {
foreach($validate[$postName] as $key => $ruleValue){
$set = 'set'.ucfirst($key);
$get = 'get'.ucfirst($key);
$this->$set($postValue , $ruleValue);
if($this->$get() != '' || $this->$get() != NULL) {
$test[$postName][] .= $this->$get();
}
}
}
$this->_errors = $test;
}
public function setValidation(){
return $this->_errors;
}
public function getRequired() {
return $this->_required;
}
public function setRequired($value, $ruleValue) {
if (empty($value) && $ruleValue == TRUE) {
$this->_required = 'this field is required';
}
}
public function getMinLength() {
return $this->_minLength;
}
public function setMinLength($value, $ruleValue) {
if (strlen($value) < $ruleValue) {
$this->_minLength = ' must be longer than' . $ruleValue . '';
}
}
public function getMaxLength() {
return $this->_maxLength;
}
public function setMaxLength($value, $ruleValue) {
if (strlen($value) > $ruleValue) {
$this->_maxLength = 'must be shorter than' . $ruleValue . '';
}
}
}
答
在这里你去:
<?php
$required = array(
'This field is not required',
'This field is required'
);
$length = 'Requires more than {less} but less than {more}';
$needs = array(
'title' => array(
'required' => 1,
'minLength' => 2,
'maxLength' => 50,
),
'subtitle' => array(
'required' => 1,
'minLength' => 2,
'maxLength' => 55
)
);
$new_needs = array();
foreach($needs as $key => $value) // Loop over your array
{
$new_needs[$key][] = $required[$value['required']];
$new_needs[$key][] = str_replace(
array('{more}', '{less}'),
array($value['maxLength'], $value['minLength']),
$length
);
}
foreach($_POST as $key => $value)
{
if(empty($value)) { echo $new_needs[$key][0]; }
if(strlen($value) > $needs[$key]['maxLength'] || strlen($value) < $needs[$key]['minLength']) echo $new_needs[$key][1];
}
应该是自我解释,如果你读了它。
结果:
Array
(
[title] => Array
(
[0] => This field is required
[1] => Requires more than 2 but less than 50
)
[subtitle] => Array
(
[0] => This field is required
[1] => Requires more than 2 but less than 55
)
)
做什么同比有那么远吗?你在哪里被封锁? – Lepidosteus
见上文鳞翅目。 – Bas