Newmaster
Newmaster

Reputation: 57

How to create one array from two arrays according to criteria

I have two arrays:

$generated_errors = array(
          'required'  => 'fieldname', 
          'min'  => 'fieldname', 
          'max'  => 'fieldname');
$all_errors = array(
          'required' => ' is required', 
          'min' => ' must be at least 6 character', 
          'max' => ' must be at maximum 20 character', 
          'onlynumber' => ' must be only numbers', 
          'email' => ' must be valid email');

I want to 1 array (according to $generated_errors) from both of them as:

$errors = array(
          'required' => 'Field name is required', 
          'min' => 'Field name must be at least 6 character', 
          'max' => 'Field name must be maximum 20 character');

Upvotes: 2

Views: 63

Answers (3)

Mostafa Talebi
Mostafa Talebi

Reputation: 9173

It is better to do some like this:

$result = array();
array_walk($generated_errors, function($item, $value) use(&$all_errors, &$result){
       array_push($result, [$key => ($generated_errors[$key] . $all_errors[$key])]);
});

I haven't tested the above code, but I think it works. I guess it's faster than the for loop. Because in for loop there are a lot of deductions which reduce the speed (though not very much).

Upvotes: 0

Kuldeep Dangi
Kuldeep Dangi

Reputation: 4422

you should do like this

$errors =array();
for ($generated_erros as $key => $value) {
    $errors[$key] = $value . $all_errors[$key];
}

Upvotes: 0

Mureinik
Mureinik

Reputation: 311188

You could iterate over $generated_errors and enrich it with $all_errors values:

for ($generated_erros as $key => $value) {
    $erros[$key] = $value . $all_errors[$key];
}

Upvotes: 1

Related Questions