【发布时间】:2015-06-10 03:11:19
【问题描述】:
我正在尝试将两个数组与 PHP 的 array_combine() 函数合并,我收到此错误:
$subjects 的array_combine() 期望参数 1 是数组,给定字符串
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 我已经编辑并包含了预期的输出