前書き
相談をされた時に回答したものの備忘録になります。
PHPでエクセルファイルを作る業務をしていたそうで、送られてきた値の順番からセルに優先度を設定しなければならないとのことで、最終的には以下のコードのように入れるセル番号に対しての文字列を設定したいと相談を受けました。
$array = [
'C10' => '()',
'C11' => '()',
'C12' => '(1)',
'C13' => '()',
'C14' => '()',
'C15' => '(3)',
'C16' => '()',
'C17' => '()',
'C18' => '(2)',
'C19' => '()',
'C20' => '()'
];
タイプのようなものがあり、番号で管理されているらしいです。
以下のような配列でタイプと優先度が送られてきます。
$values = [
1 => '013',
2 => '019',
3 => '018',
];
やったこと
元となる配列を用意し、キーが一致するものを上書きする。
$array = [
'C10' => '()',
'C11' => '()',
'C12' => '()',
'C13' => '()',
'C14' => '()',
'C15' => '()',
'C16' => '()',
'C17' => '()',
'C18' => '()',
'C19' => '()',
'C20' => '()'
];
$types = [
"010" => "C10",
"011" => "C11",
"012" => "C12",
"013" => "C13",
"014" => "C14",
'015' => 'C15',
'016' => 'C16',
'017' => 'C17',
'018' => 'C18',
'019' => 'C19',
'020' => 'C20'
];
// 送られてくる値の例
$values = [
1 => '013',
2 => '019',
3 => '018',
];
// 配列を上書きする
foreach ($values as $key => $value) {
$array[$types[$value]] = '('. $key. ')';
}
後書き
ベストな書き方ではないと思いますが、こういったやり方もあると参考になれば幸いです。