警告:不能将标量值用作数组

时间:2013-12-07 19:26:13

标签: php syntax-error

function convert_realsoft($type, $input_id) {
  $dial_arr = array();

  switch ($type) {
    case 'action':
      $dial_arr = array(
        'lorem'       => 1,
        'ipsum'       => 2,
        'dolor'       => 3,
      );

      return $dial_arr[$input_id];

    break;

    case 'desk':
      $dial_arr = array(
        'sit'  => 1,
        'amet' => 2,
      );

      return $dial_arr[$input_id];

    break;

    ...and next case...
  }
}

此函数返回我: 警告:不能在...中使用标量值作为数组

问题在于回归。删除此行后,警告消失......

我测试了几个选项。有谁知道问题在哪里?

2 个答案:

答案 0 :(得分:1)

我认为这应该是这样的: -

function convert_realsoft($type, $input_id) {
  $dial_arr = array();

  switch ($type) {
    case 'action':
      $dial_arr[$input_id] = array(
        'lorem'       => 1,
        'ipsum'       => 2,
        'dolor'       => 3,
      );

      return $dial_arr[$input_id];

    break;

    case 'desk':
      $dial_arr[$input_id] = array(
        'sit'  => 1,
        'amet' => 2,
      );

      return $dial_arr[$input_id];

    break;

    ...and next case...
  }
}

答案 1 :(得分:0)

在进行函数调用时,您准确地将$input_id参数的函数传递给了什么?它是整数还是字符串?你可以发布样本函数调用吗?

我的猜测是你试图使用整数值来查找数组中的值,但是你的数组需要一个键来根据你在函数中创建数组的方式来获取值。

另外,我会写这样的回复语句(我之前的评论中提到了这一点)

function convert_realsoft($type, $input_id) {

  $dial_arr = array();

  switch ($type) {

    case 'action':

      $dial_arr = array(
        'lorem'       => 1,
        'ipsum'       => 2,
        'dolor'       => 3,
      );

    break;

    case 'desk':

      $dial_arr = array(
        'sit'  => 1,
        'amet' => 2,
      );

    break;

    //...and next case...
  }

  return $dial_arr[$input_id];

}