我正忙于对我的应用程序中的菜单结构进行排序。用户对菜单重新排序后,值(例如,菜单项 1、菜单项 2 等)仍位于同一位置。
现在我有两个数组,一个保存它们的排序方式(数组 1),另一个保存菜单项的值。(阵列 2)
两个数组的示例;(数组 1,保存键)
Array
(
[0] => 1
[1] => 2
[2] => 0
)
上述数组的值是新数组的键。
(数组 2,保存值)
Array
(
[0] => value_0
[1] => value_1
[2] => value_2
)
所以我认为最好创建一个包含以下内容的新数组;
- 数组 1 的值
- 数组 2 的值
但是,我遇到了问题。我希望数组 2 中的值坚持它们的键。因此,假设我将 value_0 的位置更改为最后一个,新数组将如下所示;
Array
(
[1] => value_1
[2] => value_2
[0] => value_0
)
有没有办法做到这一点,还是我做错了?
编辑
好的,它是多维数组。但是我在创建一个时遇到了问题。
数组 1 和数组 2 都来自数据库。数组 1 包含排序顺序,数组 2 包含值。现在,数组 2 中的值是这样存储的;值1,值2,值3。因此,为了能够与他们合作,我会使用 ,(逗号)。
获取的结果都不同;
- 对于第一个数组,它返回与有多少值一样多的值。(所以如果有 3 个值,它将返回 3 个不同的位置。)
- 对于第二个数组,它将返回 18 条记录,因为这与其他菜单项(子菜单等)相关联。
所以对于我做的第一个数组;
while ($row = mysql_fetch_assoc($result_query_test)) {
$positions[] = $row['position'];
}
对于我做的第二个数组;
while ($row = mysql_fetch_assoc($result_values)) {
$array_values = explode(',', $row['values']);
}
从那时起,我在创建多维数组时遇到了问题;
while ($row = mysql_fetch_assoc($result_values)) {
$array_values = explode(',', $row['values']);
foreach ($positions as $new_key) {
foreach ($array_values as $value) {
$new_array[] = array('key' => $new_key, 'value' => $value);
}
}
}
编辑二:
这就是我现在使用的;
(因为 $all_values 是一个多维数组,因为我必须事先分解这些值。)
foreach ($all_values as $values) {
foreach ($values as $key => $value) {
$new_array[] = array('key' => $positions[$key], 'value' => $value);
}
}
这就是 $new_array 返回的内容;
Array
(
[0] => Array
(
[key] => 0
[value] => value_0
)
[1] => Array
(
[key] => 2
[value] => value_2
)
[2] => Array
(
[key] => 1
[value] => value_1
)
[3] => Array
(
[key] => 0
[value] => value_0
)
[4] => Array
(
[key] => 2
[value] => value_2
)
[5] => Array
(
[key] => 1
[value] => value_1
)
现在我需要获取这些值并用逗号将它们内爆。但是,由于不是每 3 个值(value_0、value_1、value_3)都在一起,所以我现在不能这样做。
在此示例中,有 3 个键 (0,1,2) 与它们的值一起应该是不同的数组,就像您在示例中所做的那样:
Array (
[0] = Array (
[key] = 1,
[value] = value_1
),
[1] = Array (
[key] = 2,
[value] = value_2
),
[2] = Array (
[key] = 0,
[value] = value_0
)
)