Объединить две переменные
Вот что я пытаюсь сделать:
$errmsg_1 = 'Please make changes to your post';
$errmsg_2 = 'Please make changes to your post image';
$error = 1;
echo $errmsg_.$error; //'Please make changes to your post';
Ничто не будет работать, и есть много сообщений об ошибках, подобных этим, которые я должен повторить.
Кто-нибудь может помочь?
10 ответов
Хранить сообщения об ошибках в массиве:
$errmsg[1] = 'Please make changes to your post';
$errmsg[2] = 'Please make changes to your post image';
// and so on
$error = 1;
echo $errmsg[$error];
То, что вы просите, известно как переменная переменная - см. http://uk.php.net/manual/en/language.variables.variable.php для получения дополнительной информации.
Но, пожалуйста, не делай этого; это считается очень плохой практикой кодирования.
На самом деле вам нужен массив:
$errmsg = array(
'Please make changes to your post', //this will be $errmsg[0]
'Please make changes to your post image' //this will be $errmsg[1]
);
$error = 0; //nb: arrays start at item number 0, not 1.
echo $errmsg[$error];
Это гораздо лучшая практика кодирования, чем возиться с переменными переменными.
Пытаться
echo {'$errmsg_' . $error};
Хотя вы делаете это действительно довольно неправильно. Вы должны использовать вместо этого массив; объединение имен переменных является плохой практикой и приводит к грязному / нечитаемому / неработающему коду. Использование массива будет работать так:
$errors = array(
'Please make changes to your post',
'Please make changes to your post image'
);
echo $errors[$error];
Хотя имейте ввиду, что $error
начинается с 0, так как массивы основаны на 0 индексах.
С головы до головы, я думаю, ты хочешь $errmsg_{$error}
, но я не в состоянии проверить / перепроверить это прямо сейчас.
Это должно работать:
$errmsg_1 = 'Please make changes to your post';
$errmsg_2 = 'Please make changes to your post image';
$error = 1;
echo ${'errmsg_ ' . $error};
Вы пытаетесь сделать это:
function errorMsg($code)
{
$msg;
switch($code)
{
case 1:
$msg = 'Please make changes to your post';
break;
case 2:
$msg = 'Please make changes to your post image';
break;
}
return $msg;
}
echo errorMsg(1);
$error_msg = 'Please make changes to your ';
$error[1] = 'post';
$error[2] = 'post image';
for($i=1; $i<=count($error); $i++)
echo $error_msg . $error[$i];
Не обидно, а то, что ты делаешь - плохой дизайн.
Небольшое, но далеко не идеальное решение будет хранить ваши ошибки в виде массива.
$errors = array('Please make changes to your post', 'Please make changes to your post image');
$error = 0;
echo $errors[$error];
Попробуйте использовать это ${$errmsg_.$error}
Это переменная переменная: http://php.net/manual/en/language.variables.variable.php
Используйте массивы. сохраните индексы для удобного использования в будущем, а также для легкого изменения сообщений об ошибках и упорядоченного API.
$errmsg = array(
1 => 'Please make changes to your post',
2 => 'Please make changes to your post image'
);
$error = 1;
echo $errmsg[$error]; //'Please make changes to your post';