LoginSignup
1
1

【PHP】配列の値を書き換える※備忘録

Posted at

前書き

相談をされた時に回答したものの備忘録になります。
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. ')';
}

後書き

ベストな書き方ではないと思いますが、こういったやり方もあると参考になれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1