2016-07-21 2 views
3

Я пытаюсь написать скрипт PHP IF/ELSE, который вызывает функцию внутри каждого оператора IF. Хотя ниже работает, мне не нравится дублировать код!PHP-функция внутри IF ELSE

Любой совет будет оценен по достоинству. Спасибо.

PHP, попытка 1 - update_usermeta функционирует, но имеет необходимость дублировать внутри каждого оператора IF.

// 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, Покушение 2 - update_usermeta не функционировал. @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, Работа - update_usermeta функционировал. @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)); 
} 

ответ

1

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)); 
+0

@Adam отметьте это правильно, если это вам поможет :) –

+0

Спасибо @jayesh, я очень ценю вашу помощь с этой проблемой. –

0

вместе с раствором @Jayesh Chitroda в вы можете переместить две последние строки из него в функцию (как вы хотели):

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 затем может называть это следующим образом:

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

Я использовал ваш пример, но «update_usermeta» больше не работает? Просмотрите мой код выше. Спасибо. –

+0

@ Адам вы используете WordPress? Я обнаружил, что update_usermeta() устарел и вместо этого следует использовать update_user_meta(). Кстати: Откуда вы знаете, что он больше не работает? – KJaeg

+0

Да, я использую WordPress. –