👋

【PHP】foreachを使った様々な文①

2023/06/08に公開

こんにちは、本日はPHPで配列の問題を解いていて気づいたチョットした仕様をメモしていきます!

あんまり参考にならないかもしれませんが、組み込み関数をなるべく使わずにforeachのみで
できる処理の基本を載せていきます。

参考記事様

https://zenn.dev/ad5/articles/60ca8edadc236f

array_columnを使わずに配列を作る

$in は、ユーザマスタから取得した2次元配列です。
ユーザコードをキー、名前を値とする連想配列に加工してください。

$in = [
    [
        'id' => 1,
        'code' => 'S1001',
        'name' => '山田',
    ],
    [
        'id' => 2,
        'code' => 'S1003',
        'name' => '鈴木',
    ],
    [
        'id' => 3,
        'code' => 'S1002',
        'name' => '佐藤',
    ],
];

var_dump($out);

/*
array (size=3)
  'S1001' => string '山田' (length=6)
  'S1002' => string '鈴木' (length=6)
  'S1003' => string '佐藤' (length=6)
*/
array_columnを使った場合
$out = array_column($in, $name, $code); //  第二引数が値、第三引数がキーとなる。
foreachで出力した場合
$out = [];
foreach($in as $val){
	$out[$val['code']] = $val['name']; //codeをキーにnameが値となる。
}

foreachで連想配列を作りたいときは空の配列にvalueのキーにしたい値=値にしたい値で設定すれば
いいみたい。

array_searchを使わずに会得する

$in1 は ユーザコード => 名前 の連想配列です。
名前 $in2 をもとに該当するユーザコードを取得してください。

$in1 = [
    'S1001' => '山田',
    'S1002' => '鈴木',
    'S1003' => '佐藤',
];

$in2 = '鈴木';

//////////////////////////////////
//       SOME CODE HERE         //
//////////////////////////////////

var_dump($out);

/*
string 'S1002' (length=5)
*/
array_searchを使う場合
$out = array_search($in2, $in) //比べる時は第一引数に調べたい要素、第二引数に調べたい配列を設定する。
foreachで出力する例

$out = null; // 初期化

foreach($in1 as $key => $val){ 
	if($in2 == $val){ //もし$in2の値が$valと一致したら
	$out = $key; //その時点のキーを$outに設定
	break; //その時点でループは終了
	}
}
もし一致させる値が増えたら!
in2 = ['鈴木',  '佐藤'] // 佐藤が増えた場合

$out = []; // 初期化

foreach($in1 as $key => $val1){
	foreach($in2 as $val2){ //in2の値をループ
	if($in2 === $val1) //一致したら
	$out = $key //コードを設定
	}
}

変わらないですね。

あとがき

今日は短いですがここまでです。
foreachの組み込み関数は便利ですので通常こういった処理はしないと思いますが
今回は学習の為にforeachでコードを組んでみました。
明日、続きをやっていきます!

Discussion