2

这是我正在尝试做的事情:

$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';

什么都行不通,并且有很多像这些错误消息我必须回应。

任何人都可以帮忙吗?

4

10 回答 10

11

您所要求的被称为变量变量——有关更多信息,请参见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];

这比处理可变变量要好得多。

于 2012-09-14T15:27:57.070 回答
6

将错误消息存储在数组中:

$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];
于 2012-09-14T15:27:47.300 回答
4

尝试

echo {'$errmsg_' . $error};

虽然你这样做真的很不正确。您应该改用数组;连接变量名是不好的做法,会导致代码混乱/不可读/损坏。使用数组将像这样工作:

$errors = array(
    'Please make changes to your post',
    'Please make changes to your post image'
);

echo $errors[$error];

尽管请记住$error从 0 开始,因为数组是基于 0 索引的。

于 2012-09-14T15:26:58.300 回答
3

我想你想要$errmsg_{$error}的,但我现在无法测试/仔细检查。

于 2012-09-14T15:26:24.670 回答
1

这应该有效:

$errmsg_1 = 'Please make changes to your post';
$errmsg_2 = 'Please make changes to your post image';

$error = 1;

echo ${'errmsg_ ' . $error};
于 2012-09-14T15:27:23.613 回答
0
$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];
于 2012-09-14T15:37:23.580 回答
0

没有冒犯的意思,但你所做的是糟糕的设计。

一个小但并非完美的解决方案是将您的错误存储为数组。

$errors = array('Please make changes to your post', 'Please make changes to your post image');
$error = 0;
echo $errors[$error];
于 2012-09-14T15:28:18.007 回答
0

尝试使用这个${$errmsg_.$error}

这是一个变量变量: http: //php.net/manual/en/language.variables.variable.php

于 2012-09-14T15:28:47.847 回答
0

您正在尝试这样做:

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);
于 2012-09-14T15:29:23.200 回答
0

使用数组。保留索引以方便将来参考,以及易于更改错误消息和组织 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';
于 2012-09-14T15:57:33.780 回答