我需要修改多维数组的一些内容。 首先,我需要将包含数组的键转换为同一数组的元素。为了做到这一点,我需要找到钥匙的名字。这里的问题是密钥不断改变它的名字。我将基于修改的关键点叫做“grupo *”和一个数字。查找多维关联数组上的键并修改数组结构(PHP)
这里的阵列的示例(使用的print_r()PHP函数中提取):
Array
(
[codigo] => 21201
[nombre] => CALCULO INTEGRAL
[creditos] => 3
[grupo8] => Array
(
[horario] => Array
(
[martes] => Array
(
[salon] => Array
(
[0] => G-216
[1] => G-216
)
[horaInicio] => Array
(
[0] => 1600
[1] => 1700
)
[horaFin] => Array
(
[0] => 1700
[1] => 1800
)
)
[jueves] => Array
(
[salon] => Array
(
[0] => C-102
[1] => C-102
)
[horaInicio] => Array
(
[0] => 1600
[1] => 1700
)
[horaFin] => Array
(
[0] => 1700
[1] => 1800
)
)
)
)
)
Array
(
[codigo] => 21202
[nombre] => FISICA MECANICA
[creditos] => 4
[grupo1] => Array
(
[horario] => Array
(
[lunes] => Array
(
[salon] => Array
(
[0] => Lab B-207
[1] => Lab B-207
)
[horaInicio] => Array
(
[0] => 1300
[1] => 1400
)
[horaFin] => Array
(
[0] => 1400
[1] => 1500
)
)
[martes] => Array
(
[salon] => Array
(
[0] => G-110
[1] => G-110
)
[horaInicio] => Array
(
[0] => 1300
[1] => 1400
)
[horaFin] => Array
(
[0] => 1400
[1] => 1500
)
)
[jueves] => Array
(
[salon] => Agora 101
[horaInicio] => 1300
[horaFin] => 1400
)
)
)
)
Array
(
[codigo] => 21203
[nombre] => ALGEBRA LINEAL
[creditos] => 3
[grupo13] => Array
(
[horario] => Array
(
[lunes] => Array
(
[salon] => B-108
[horaInicio] => 1100
[horaFin] => 1200
)
[viernes] => Array
(
[salon] => Array
(
[0] => B-107
[1] => B-107
)
[horaInicio] => Array
(
[0] => 1000
[1] => 1100
)
[horaFin] => Array
(
[0] => 1100
[1] => 1200
)
)
)
)
)
Array
(
[codigo] => 21304
[nombre] => PROGRAMACION ORIENTADA A OBJETOS
[creditos] => 3
[grupo4] => Array
(
[horario] => Array
(
[miercoles] => Array
(
[salon] => Array
(
[0] => B209 lab
[1] => B209 lab
[2] => B209 lab
)
[horaInicio] => Array
(
[0] => 1400
[1] => 1500
[2] => 1600
)
[horaFin] => Array
(
[0] => 1500
[1] => 1600
[2] => 1700
)
)
)
)
)
Array
(
[codigo] => 275201
[nombre] => MATEMATICAS DISCRETAS
[creditos] => 2
[grupo2] => Array
(
[horario] => Array
(
[jueves] => Array
(
[salon] => Array
(
[0] => A-203
[1] => A-203
)
[horaInicio] => Array
(
[0] => 1100
[1] => 1200
)
[horaFin] => Array
(
[0] => 1200
[1] => 1300
)
)
)
)
)
Array
(
[codigo] => MAKE
[nombre] => MARKETING ELECTRONICO
[creditos] => 2
[grupo1] => Array
(
[horario] => Array
(
[viernes] => Array
(
[salon] => Array
(
[0] => G-219
[1] => G-219
)
[horaInicio] => Array
(
[0] => 1200
[1] => 1300
)
[horaFin] => Array
(
[0] => 1300
[1] => 1400
)
)
)
)
)
正如可以看到的,关键[GRUPO *]不断变化数量,并且它可以是一个1或2位数字。我唯一知道的就是这样一个键包含一个数组。
我需要对内部数组中的一个做同样的事情,那是一个工作日。
这里是数组应该如何看(如JSON)为例:
{
"codigo": "21201",
"nombre": "CALCULO INTEGRAL",
"creditos": "3",
"grupo": "8",
"horario": [
{
"dia": "martes",
"salon": [
"G-216",
"G-216"
],
"horaInicio": [
"1600",
"1700"
],
"horaFin": [
"1700",
"1800"
]
},
{
"dia": "jueves",
"salon": [
"C-102",
"C-102"
],
"horaInicio": [
"1600",
"1700"
],
"horaFin": [
"1700",
"1800"
]
}
]
}
平日不断变化,所以我有一个类似的问题在那里。
几乎完美,你错过了preg_match函数中的')'。这正是我需要的,谢谢! – HaPK
@HaPK不客气,我会添加缺少的括号。 :)。 – mdamia
还有另一个bug,注意有时候“horario”数组有几个不同的日子,但是你的代码只添加数组中的最后一天。我试图通过在'group ['horario']'foreach循环内添加一个简单的'$ dias [] = $ group ['horario'];'然后像'$ data [$ k] [' horario'] = $ dias;'但它不起作用。 – HaPK