3

I'm trying to write a PHP IF/ELSE script that calls a function within each IF statement. Although the below works, I don't like having to duplicate code!

Any and all advice would be appreciated. Thank you.

PHP, Attempt 1 - update_usermeta functioned, but having to duplicate within each IF statement.

// Group Outputs
if ($group1 > $group2 && $group1 > $group3 && $group1 > $group4 && $group1) {
  $result = '1';
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
} elseif ($group2 > $group1 && $group2 > $group3 && $group2 > $group4 && $group2) {
  $result = '2';
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
} elseif ($group3 > $group1 && $group3 > $group2 && $group3 > $group4 && $group3) {
  $result = '3';
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
} elseif ($group4 > $group1 && $group4 > $group2 && $group4 > $group3 && $group4) {
  $result = '4';
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
} elseif ($group5 > $group1 && $group5 > $group2 && $group5 > $group3 && $group5) {
  $result = '5';
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
} elseif ($group6 > $group1 && $group6 > $group2 && $group6 > $group3 && $group6) {
  $result = '6';
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
} elseif ($group7 > $group1 && $group7 > $group2 && $group7 > $group3 && $group7) {
  $result = '7';
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
} elseif ($group8 > $group1 && $group8 > $group2 && $group8 > $group3 && $group8) {
  $result = '8';
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
} else {
  echo 'Error';
}

PHP, Attempt 2 - update_usermeta did not function. @KJaeg

// Update Profile
function update($result){
  echo $result;
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
}

// Group Outputs
if ($group1 > $group2 && $group1 > $group3 && $group1 > $group4 && $group1) {
  update('1');
} elseif ($group2 > $group1 && $group2 > $group3 && $group2 > $group4 && $group2) {
  update('2');
} elseif ($group3 > $group1 && $group3 > $group2 && $group3 > $group4 && $group3) {
  update('3');
} elseif ($group4 > $group1 && $group4 > $group2 && $group4 > $group3 && $group4) {
  update('4');
} elseif ($group5 > $group1 && $group5 > $group2 && $group5 > $group3 && $group5) {
  update('5');
} elseif ($group6 > $group1 && $group6 > $group2 && $group6 > $group3 && $group6) {
  update('6');
} elseif ($group7 > $group1 && $group7 > $group2 && $group7 > $group3 && $group7) {
  update('7');
} elseif ($group8 > $group1 && $group8 > $group2 && $group8 > $group3 && $group8) {
  update('8');
} else {
  echo 'Error';
}

PHP, Working - update_usermeta functioned. @JayeshChitroda

// Group Outputs
$result = '';
if ($group1 > $group2 && $group1 > $group3 && $group1 > $group4 && $group1) {
  $result = '1';
} elseif ($group2 > $group1 && $group2 > $group3 && $group2 > $group4 && $group2) {
  $result = '2';
} elseif ($group3 > $group1 && $group3 > $group2 && $group3 > $group4 && $group3) {
  $result = '3';
} elseif ($group4 > $group1 && $group4 > $group2 && $group4 > $group3 && $group4) {
  $result = '4';
} elseif ($group5 > $group1 && $group5 > $group2 && $group5 > $group3 && $group5) {
  $result = '5';
} elseif ($group6 > $group1 && $group6 > $group2 && $group6 > $group3 && $group6) {
  $result = '6';
} elseif ($group7 > $group1 && $group7 > $group2 && $group7 > $group3 && $group7) {
  $result = '7';
} elseif ($group8 > $group1 && $group8 > $group2 && $group8 > $group3 && $group8) {
  $result = '8';
} else {
  echo 'Error';
}

// Update Profile
if (!empty($result)){
  update_usermeta(absint($user_ID),'foo',wp_kses_post('NO'));
  update_usermeta(absint($user_ID),'bar',wp_kses_post($result));
}

2 Answers 2

2

Try:

$value = "";
if ($group1 > $group2) {
  $value = 'Value 1';
} elseif ($group2 > $group1) {
  $value = 'Value 2'; 
} elseif ($group3 > $group1) {
  $value = 'Value 3';
}

update_usermeta(absint($user_ID),'purchased',wp_kses_post('NO'));
update_usermeta(absint($user_ID),'value',wp_kses_post($value));
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you @jayesh, I really appreciate your assistance with this problem.
0

Together with @Jayesh Chitroda's solution you can move the two last line from him into a function (like you wished):

function update($val){

 if (!empty($val)){
   echo $val;

   update_usermeta(absint($user_ID),'purchased',wp_kses_post('NO'));
   update_usermeta(absint($user_ID),'value',wp_kses_post($val));
   }
}

You can then call it this way:

if ($group1 > $group2) {
  update('Value 1');
} elseif ($group2 > $group1) {
  update('Value 2'); 
} elseif ($group3 > $group1) {
  update('Value 3');
}

5 Comments

I've used your example, but the 'update_usermeta' no longer works? Please review my code above. Thank you.
@Adam are you using WordPress? I found, that update_usermeta() is deprecated, and that update_user_meta() should be used instead. BTW: How do you know, that it does not work anymore?
Yes, I'm using WordPress.
Additionally I have no emptiness check in my funciton. Maybe the three lines in the function should be put inside an if (!empty($result)){ }. See my edited code.
Another important question is, where the fuction is located. Do you have the function and the other code in the same file, like you posted it above in your code snippet, or did you put the function in a separate file?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.