【发布时间】:2019-05-16 09:31:43
【问题描述】:
我有以下数组:
array(10) {
[0]=>
array(2) {
["id"]=>
string(2) "73"
["position"]=>
string(1) "1"
}
[1]=>
array(2) {
["id"]=>
string(2) "58"
["position"]=>
string(1) "2"
}
[2]=>
array(2) {
["id"]=>
string(2) "82"
["position"]=>
string(1) "3"
}
[3]=>
array(2) {
["id"]=>
string(2) "84"
["position"]=>
string(1) "4"
}
[4]=>
array(2) {
["id"]=>
string(2) "74"
["position"]=>
string(1) "5"
}
[5]=>
array(2) {
["id"]=>
string(2) "59"
["position"]=>
string(1) "6"
}
[6]=>
array(2) {
["id"]=>
string(2) "72"
["position"]=>
string(1) "7"
}
[7]=>
array(2) {
["id"]=>
string(2) "78"
["position"]=>
string(1) "7"
}
[8]=>
array(2) {
["id"]=>
string(2) "77"
["position"]=>
string(1) "8"
}
[9]=>
array(2) {
["id"]=>
string(2) "71"
["position"]=>
string(1) "8"
}
}
我希望将数组的 keys indexes 替换为位置值。输出应如下所示:
array(10) {
[1]=>
array(2) {
["id"]=>
string(2) "73"
["position"]=>
string(1) "1"
}
[2]=>
array(2) {
["id"]=>
string(2) "58"
["position"]=>
string(1) "2"
}
[3]=>
array(2) {
["id"]=>
string(2) "82"
["position"]=>
string(1) "3"
}
[4]=>
array(2) {
["id"]=>
string(2) "84"
["position"]=>
string(1) "4"
}
[5]=>
array(2) {
["id"]=>
string(2) "74"
["position"]=>
string(1) "5"
}
[6]=>
array(2) {
["id"]=>
string(2) "59"
["position"]=>
string(1) "6"
}
[7]=>
array(2) {
["id"]=>
string(2) "72"
["position"]=>
string(1) "7"
}
[7]=>
array(2) {
["id"]=>
string(2) "78"
["position"]=>
string(1) "7"
}
[8]=>
array(2) {
["id"]=>
string(2) "77"
["position"]=>
string(1) "8"
}
[8]=>
array(2) {
["id"]=>
string(2) "71"
["position"]=>
string(1) "8"
}
}
我尝试了下面的代码,但它只打印数组中的一个元素:
$newarr = array();
$values = $this->request->get( 'values', null );
foreach ($values as $oldkey => $value) {
$position = $value["position"];
$newarr[$position] = $values[$oldkey];
$values=$newarr;
unset($newarr);
}
var_dump($values);exit;
$values 的 var_dump 结果是
<br />
<b>Notice</b>: Undefined offset: 8 in ResourcesController.php</b>
<b>Notice</b>: Undefined offset: 9 in ResourcesController.php</b> on line <b>367</b><br />
array(1) {
[8]=>
NULL
}`
【问题讨论】:
-
你不能那样做。您不能拥有具有多个具有相同键的值的数组。
-
您不能拥有具有相同值的索引。您有多个具有相同值的位置 - 它们不是唯一的,因此不能用作数组中的索引。
-
尼克抓得好!第一眼没看到
-
@Nick 是的,这是一个错字。
-
那么如果两个位置相同会怎样呢?