カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

null合体演算子

PHPでもPHP7からnull合体演算子がサポートされるようになりました。
よく使う場面としては、nullの場合は空の文字列を返したい等です。

$val = null;
echo $val ?? "default";

出力結果

default

その他、C#やSwiftでも使えます。
JavaScriptはES2020からサポートされるようになったようです。
※Swiftの場合は「nil合体演算子」と呼ばれます。

なお、Perl(5.10以降)ではnull合体演算子は//だったりするので、言語によって違いがあります。
各言語仕様をご確認ください。

ちなみにVisualBasicだとNz関数がそれに当たるんでしょうか。
CSVエクスポートでのテキストデータのNull値について ACCESS

453 views

配列やオブジェクトから指定した列の値を取得する

array_columnという関数を使って、配列やオブジェクトから指定した列(カラム)の値を取得することができます。
オブジェクトからも取り出せるのは非常に便利だなと思いました。

以下のような連想配列があったとします。

$ARRAY = [
    [
        "id" => 1,
        "name" => "aiko"
    ],
    [
        "id" => 2,
        "name" => "beta"
    ],
    [
        "id" => 3,
        "name" => "clare"
    ]
];

array_column関数を使ってname列だけを取り出してみます。

$NAME = array_column($ARRAY, "name");

print_r($NAME);

出力結果はこのようになります。

Array
(
    [0] => aiko
    [1] => beta
    [2] => clare
)

オブジェクトの場合

class User
{
    public $username;

    public function __construct(string $username)
    {
        $this->username = $username;
    }
}

$users = [
    new User("user 1"),
    new User("user 2"),
    new User("user 3"),
];

$USER = array_column($users, "username");

print_r($USER);

出力結果

Array
(
    [0] => user 1
    [1] => user 2
    [2] => user 3
)

公式リファレンス:
PHP: array_column – Manual

5,180 views

cURL(client for URL)

cURL(カール)は、HTTP・HTTPSやFTPなど様々なプロトコルを用いてデータを転送するライブラリとコマンドラインツールです。
最近のレンタルサーバーのPHPにはライブラリがデフォルトで組み込んであることもあります。

HTTPでデータを取得する

まず取得したいURLを設定

$url = "http://www.example.jp";

cURLを初期化し、ハンドルを取得します。

$ch = curl_init();

こちらにいきなりURLを入れてcurl_init($url)としても構いません。
ここではオプション設定を使用してURLを設定します。

curl_setopt($ch, CURLOPT_URL, $url);

メソッドの設定。GETを指定します。

curl_setopt($ch, CURLOPT_HTTPGET, true);

最後に取得したデータを文字列として取得するよう設定します。
続きを読む…»

655 views

PDOのタイムアウト設定

MySQL接続にPDOを使用している場合のタイムアウト設定についてです。

PDOにはPDO::ATTR_TIMEOUTというオプションを設定することが出来ます。
設定する値は数値で、単位は秒です。

設定方法としてはPDOのインスタンスを生成するときに設定するか、後から設定する方法の2通りあります。

インスタンス生成のときに設定する

$dbh = new PDO('mysql:host=localhost;dbname=test', 
    $user, 
    $pass, 
    array(PDO::ATTR_TIMEOUT => 30)
);

後から設定する

PDO::setAttribute(PDO::ATTR_TIMEOUT, 30);

続きを読む…»

5,098 views

XAMPPでMySQLが起動しないエラー

XAMPPを使って開発をしていると、たまにMySQLがエラーで起動できなくなることがあります。
これまで同じ現象を2台のPCで経験しましたので、今後のためにも色々調べてみた中からなるべく簡単に戻せる方法をご紹介します。

まずはXAMPPでMySQLをスタートさせようとするとこのようなエラーが発生します。

エラー内容

Error: MySQL shutdown unexpectedly.
This may be due to a blocked port, missing dependencies, 
improper privileges, a crash, or a shutdown by another method.
Press the Logs button to view error logs and check
the Windows Event Viewer for more clues
If you need more help, copy and post this
entire log window on the forums

翻訳すると…

エラーです。MySQLが予期せずシャットダウンしました。
これは、ブロックされたポート、欠落した依存関係、不適切な特権、クラッシュ、または他の方法によるシャットダウンが原因である可能性があります。
不適切な特権、クラッシュ、または他の方法によるシャットダウンが原因である可能性があります。
Logs ボタンを押してエラーログを表示し、Windows Event Viewer をチェックしてください。
Windowsイベント・ビューアーを確認してください。
さらに詳しい情報が必要な場合は、以下のログウィンドウをコピーしてフォーラムに投稿してください。
ログウィンドウ全体をコピーしてフォーラムに投稿してください。

別のサービスが同ポートを使用しているか、ファイルが破損していることが原因のようです。
私の場合は同ポートを使っているサービスはなかったので、データの復元を試みたところ解決しました。


xampp\mysql\dataフォルダーを一旦別の場所にコピーしておきます。
コピー出来たらxampp\mysql\dataの中身を全て削除します。

続きを読む…»

13,429 views