【问题标题】:array_combine() expects parameter 1 to be array, string given [duplicate]array_combine() 期望参数 1 是数组,给定字符串 [重复]
【发布时间】:2015-06-10 03:11:19
【问题描述】:

我正在尝试将两个数组与 PHP 的 array_combine() 函数合并,我收到此错误:

array_combine() 期望参数 1 是数组,给定字符串

$subjects

var_dump 显示:

array(
  (int) 0 => 'English',
  (int) 1 => 'Mathematics',
  (int) 2 => 'Biology',
  (int) 3 => 'Physics',
  (int) 4 => 'Chemistry'
) 
$custom

var_dump 显示:

array(
  (int) 0 => array(
      'score' => '72',
      'grade' => 'B+',
      'points' => '10'
  ),
  (int) 1 => array(
      'score' => '99',
      'grade' => 'A',
      'points' => '12'
  ),
  (int) 2 => array(
      'score' => '77',
      'grade' => 'A-',
      'points' => '11'
  ),
  (int) 3 => array(
      'score' => '50',
      'grade' => 'C+',
      'points' => '7'
  ),
  (int) 4 => array(
      'score' => '66',
      'grade' => 'B+',
      'points' => '10'
  )
)

功能:

function score($received,$arr) {
    $keys = $received;
    $data_set = array_combine($keys,$arr);
    return $data_set;
}

这里是我调用函数的地方:

$data_set = array_map(array($this->Scores,'score'),$subjects ,custom);

如果调试将所有变量显示为数组:为什么 $subjects 在 array_combine 中显示为字符串?

编辑:

预期输出

array(
'English' => array(
    'score' => '72',
    'grade' => 'B+',
    'points' => '10'
),
'Mathematics' => array(
    'score' => '99',
    'grade' => 'A',
    'points' => '12'
),
'Biology' => array(
    'score' => '77',
    'grade' => 'A-',
    'points' => '11'
),
'Physica' => array(
    'score' => '50',
    'grade' => 'C+',
    'points' => '7'
),
'Chemistry' => array(
    'score' => '66',
    'grade' => 'B+',
    'points' => '10'
)
)

【问题讨论】:

  • 预期的输出是什么?我猜你只是想这样做:$data_set = array_combine($subjects, $custom); 你不需要 array_map 否则你循环遍历 $subjects 的每个元素,然后是字符串
  • @Rizier123 我已经编辑并包含了预期的输出

标签: php arrays


【解决方案1】:

当您使用预期输出更新您的问题时,您不需要array_map()。只需这样做:

$data_set = array_combine($subjects, $custom);

否则你所做的就是遍历$subjects$custom 的所有元素。

所以你所做的就是每次迭代:

return array_combine("English", ["score" => "72", "grade" => "B+", "points" => "10"]);
return array_combine("Mathematics", ["score" => "99", "grade" => "A", "points" => "12"]);
//...

【讨论】:

    【解决方案2】:

    试试这个简单,不需要额外的array_map

    $data_set = array_combine($subjects, $custom);
    

    【讨论】:

      猜你喜欢
      • 2019-04-02
      • 2017-07-12
      • 2019-09-05
      • 2020-01-27
      • 2021-01-13
      • 2015-07-12
      • 2016-04-30
      • 2014-12-09
      相关资源
      最近更新 更多