まつぴんノーコードブログ

ノーコード開発、これいかに

PHPのarray_column関数は配列の形を柔軟に変更できるよ

たとえばこんな形の配列があったとして、

$rows = [
    ['id' => 1, 'name' => 'taro'],
    ['id' => 2, 'name' => 'jiro'],
    ['id' => 3, 'name' => 'saburo'],
];

次のようなnameの値をキーとした配列を作りたいなら、

$result = [
    'taro',
    'jiro',
    'saburo',
];

foreach でループして作成するのが素朴な方法ですが、

$result = [];
foreach ($rows as $row) {
    $result[] = $row['name'];
}

array_column関数を使えば1行で作成できます!

$result = array_column($rows, 'name');

他にも配列の要素と任意の値をキーとした配列も1行で作成できます、

$result ($rows, null, 'name');
array(3) {
  ["taro"]=>
  array(2) {
    ["id"]=>
    int(1)
    ["name"]=>
    string(4) "taro"
  }
  ["jiro"]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(4) "jiro"
  }
  ["saburo"]=>
  array(2) {
    ["id"]=>
    int(3)
    ["name"]=>
    string(6) "saburo"
  }
}

詳しくはPHPのマニュアルを読みましょう!

PHP: array_column - Manual

AVerMedia GC551G2 LIVE GAMER EXTREME 3 の音がぷつぷつ途切れる

リンクの冒険ふたたび

みなさん、ティアキンしていますか?

遅ればせながらゼルダの伝説 ティアーズ オブ ザ キングダムをはじめました。

 

ゲーム配信をやるにあたって Nintendo Switch の映像・音声をPCに入力する必要があり、AVerMedia 製のHDMIキャプチャボード「GC551G2 LIVE GAMER EXTREME 3」を買いました。

SwitchとHDMIキャプチャボードをHDMIケーブルで接続し、キャプチャボードとPCをUSBケーブルで接続すればあとはOBSの映像キャプチャでゲーム画面を取り込むことができます。

簡単簡単と安心したのもつかの間、映像はなんなく取り込めたのですが音声がぷつぷつと途切れ途切れになるではありませんか。これではゼルダ姫を探しに行くことができません。

 

ググってみたものの同様の現象を記載しているものはなく1時間ほどあれこれしていたのですが、なんと公式サイトのトラブルシューティングに解決方法の記載がありました。どうやらUSB接続の問題でうまく音声を取り込めないことがあるようでした。

3. USB3.2 Gen2(10Gbps)ポートに接続した場合、ご使用のマザーボードの仕様によっては音声が正しくキャプチャできない場合があります。
    別のUSB3.2 Gen1 / USB3.1 Gen1(5Gbps)ポートに接続し直してご使用ください

自分の場合はUSB3.1で接続していたのですが、別のUSBポート(おそらく3.0)に変更したらうまく音声を取り込めるようになりました。接続するUSB端子を変えるだけで解決するとは...。

もしGC551G2 LIVE GAMER EXTREME 3を使い始めて、音声がぷつぷつ途切れたりノイズまみれになってしまう場合は接続するUSBポートを変更してみてください。

ではまた。