错误的写法
其中job是laravel的Model对象,$service_options是collection对象转成数组
$len = count($service_options);
for ($i=0;$i<$len;$i++){
$service_option = $service_options[$i];
$key = implode("_",[
"list",
// $service_option["name"],
$service_option["id"],
$service_option["ooo"],
]);
if (!isset($options[$key])){
$job[$key]= [];
}
array_push($job[$key],$service_option);//$job[$key][]=$service_option
}
正确的写法
$len = count($service_options);
$options = [];
for ($i=0;$i<$len;$i++){
$service_option = $service_options[$i];
$key = implode("_",[
"list",
// $service_option["name"],
$service_option["id"],
$service_option["ooo"],
]);
if (!isset($options[$key])){
$options[$key]= [];
}
array_push($options[$key],$service_option);
$job[$key] = $options[$key];
}
原因就是实现了ArrayAccess接口的对象对于数组的访问是受限的,比如这里接口只实现了一维数组,所以直接赋值$job[$key][]就不行了,所以就需要一个中间变量周转一下。详情参见预定义接口ArrayAccesshttp://php.net/manual/zh/class.arrayaccess.php。
可能我说的不对,反正就是这个接口的问题。
网友评论