php - 更改基于其他数组的键数组
问题描述
sheet
第一个数组的键与第二个数组中的键内容中的键相同。
我需要根据键编辑第一个数组的键元素,以及我在table
第二个数组中的键中的内容sheet
我尝试了无数种方法但没有成功,这是一个说明性的图像
首先:
Array
(
[0] => Array
(
[CIDADES] => PONTA GROSSA
[PERIODO] => 12:00 - 18:00
[ID] => Z8932
[END] => AV VSC DE MAUA,, ALT
[CONTRATO] => 7947488
[AREA] => AR01
[ASSINANTE] => DAVI
[BAIRRO] => OFICINAS
[OBS] => [Agendamento par]
[TEL RES] => 42410435
[TEL COM] =>
)
[1] => Array
(
[CIDADES] => PONTA GROSSA
[PERIODO] => 08:00 - 12:00
[ID] => Z7526
[END] => R P1000, FD
[CONTRATO] => 799644
[AREA] => AR01
[ASSINANTE] => BEATRIZ
[BAIRRO] => NEVES
[OBS] => [Agendamento]
[TEL RES] => 42988674761
[TEL COM] =>
)
[2] => Array
(
[CIDADES] => PONTA GROSSA
[PERIODO] => 08:00 - 12:00
[ID] => Z0979
[END] => R J93, FD
[CONTRATO] => 79490
[AREA] => AR01
[ASSINANTE] =>FERNANDES REIS
[BAIRRO] => UVARANAS
[OBS] => [Agendamentoente]
[TEL RES] => 4289986
[TEL COM] =>
)
)
而第二个
Array
(
[0] => Array
(
[id] => 1
[table] => id_operacao
[sheet] => CIDADES
)
[1] => Array
(
[id] => 2
[table] => horario
[sheet] => PERIODO
)
[2] => Array
(
[id] => 3
[table] => tipo_wo
[sheet] => TIPO DE SERVICO
)
[3] => Array
(
[id] => 4
[table] => tecnico_id
[sheet] => ID
)
[4] => Array
(
[id] => 5
[table] => contrato
[sheet] => CONTRATO
)
[5] => Array
(
[id] => 6
[table] => roteamento
[sheet] => AREA
)
[6] => Array
(
[id] => 7
[table] => endereco
[sheet] => END
)
[7] => Array
(
[id] => 8
[table] => nome_cliente
[sheet] => ASSINANTE
)
[8] => Array
(
[id] => 9
[table] => bairro
[sheet] => BAIRRO
)
[9] => Array
(
[id] => 10
[table] => obs1
[sheet] => OBS
)
[10] => Array
(
[id] => 11
[table] => telefone
[sheet] => TEL RES
)
[11] => Array
(
[id] => 12
[table] => celular
[sheet] => TEL COM
)
)
解决方案
嘿,伙计,我跳过了数组中的一些项目,但希望我的结构正确;)
$firstArray = [
[
'CIDADES' => 'PONTA GROSSA',
'PERIODO' => '12:00 - 18:00',
'ID' => 'Z8932',
'END' => 'AV VSC DE MAUA,, ALT',
'CONTRATO' => '7947488',
'AREA' => 'AR01',
'ASSINANTE' => 'DAVI',
'BAIRRO' => 'OFICINAS',
'OBS' => ['Agendamento par'],
'TEL RES' => '42410435',
],
[
'CIDADES' => 'PONTA GROSSA',
'PERIODO' => '08:00 - 12:00',
'ID' => 'Z7526',
'END' => 'R P1000, FD',
'CONTRATO' => '799644',
'AREA' => 'AR01',
'ASSINANTE' => 'DAVI',
'BAIRRO' => 'BEATRIZ',
'OBS' => ['Agendamento'],
'TEL RES' => '42988674761',
],
[
'CIDADES' => 'PONTA GROSSA',
'PERIODO' => '08:00 - 12:00',
'ID' => 'Z0979',
'END' => 'R J93, FD',
'CONTRATO' => '79490',
'AREA' => 'AR01',
'ASSINANTE' => 'FERNANDES REIS',
'BAIRRO' => 'UVARANAS',
'OBS' => ['Agendamentoente'],
'TEL RES' => '4289986',
],
];
$secondArray = [
[
'id' => 1,
'table' => 'id_operacao',
'sheet' => 'CIDADES',
],
[
'id' => 2,
'table' => 'horario',
'sheet' => 'PERIODO',
],
[
'id' => 3,
'table' => 'tipo_wo',
'sheet' => 'TIPO DE SERVICO',
],
[
'id' => 4,
'table' => 'tecnico_id',
'sheet' => 'ID',
],
[
'id' => 5,
'table' => 'contrato',
'sheet' => 'CONTRATO',
],
[
'id' => 6,
'table' => 'roteamento',
'sheet' => 'AREA',
],
[
'id' => 7,
'table' => 'endereco',
'sheet' => 'END',
],
[
'id' => 8,
'table' => 'nome_cliente',
'sheet' => 'ASSINANTE',
],
];
//I guess this is what you were missing most
$oldKeysToNewKeys = array_combine(
array_column($secondArray, 'sheet'),
array_column($secondArray, 'table')
);
foreach ($firstArray as $key => $firstArrayElements) {
$newFirstArrayElement = [];
foreach ($firstArrayElements as $oldKey => $value) {
//You could add checks to avoid errors when keys are not set etc..
$newKey = $oldKeysToNewKeys[$oldKey];
$newFirstArrayElement[$newKey] = $value;
}
$firstArray[$key] = $newFirstArrayElement;
}
//There you go!
var_dump($firstArray);
推荐阅读
- arrays - 逻辑应用程序 - 遍历 JSON 中的嵌套数组
- javascript - 从 Web3js getPastEvents 获取特定值
- c++ - 如何验证数据类型 int 和 string 的组合?
- laravel - Laravel 8 jetstream:Login.blade.php 和 Register.blade.php 页面显示问题
- python - PYODBC 错误:SQL 数据参数超出范围 (30030)(SQL 绑定参数)
- angular - 角度控制台查看
- wordpress - 在 wordpress 中,区分类别和标准页面的代码在哪里?
- apache-spark - 从临时视图名称中获取数据框
- yii2 - Yii2中如何重置所有注册脚本
- java - 将 kafka 代理日志发送到 mysql 数据库