我有一种方法可以像key : value
那样转换输入,其中key是语言ID,而value是该语言的值
我已经阅读了类似的问题,但是没有一个回答我的问题,因为我知道两个元素具有相同数量的元素
$transformation = array_map(
function($v) {
$keys = $this->langCtrl->getLangsId($this->client)->toArray();
//if $v has less thant 1 element it return an string instead of an array
//so i check first the length
if(count($v) <= 1) {
return [$this->langCtrl->getLangsId($this->client)->toArray()[0] => $v];
}else {
//here is the problem
//$keys and $v, both are the same length (dd($keys) dd($v) below)
return array_combine($keys, $v);
}
},
$tmp_arr
);
该代码适用于第一部分,但是当我检查$v > 1
时出现错误
array_combine(): Both parameters should have an equal number of elements
在您告诉我两个值都必须具有相同的长度之前,我已经检查过并且两个值均具有相同的长度,
做
count($keys) : 2
count($v) : 2
count($keys) == count($v) : true
dd($ keys)
array:2 [▼
0 => 1
1 => 2
]
dd($ v)
array:2 [▼
0 => "lang es"
1 => "lang en"
]
您可以看到两者具有相同数量的元素,但是错误仍然存在,为什么会这样?我该怎么解决?
答案 0 :(得分:0)
如果数组组合不适用于您。然后使用下面的自定义代码示例组合两个长度相同的数组。
$temp1=array("1","2");
$temp2=array("lang1", "lang2");
$temp3=array_combine($temp1, $temp2); // using php array combine function
// OR
// custom PHP array combine code
$i=0;
if(count($temp1) == count($temp2)){
foreach($temp1 as $key => $value){
$temp4[$value]=$temp2[$i];
$i++;
}
}
$ temp3和$ temp4具有相同的结果。