連想配列において特定のindexのみを抜き出して(加工したりして)配列にする処理
<?php // 元になる配列 $data = array( array('id' => 1, 'name' => 'Bob', 'position' => 'Clerk'), array('id' => 2, 'name' => 'Alan', 'position' => 'Manager'), array('id' => 3, 'name' => 'James', 'position' => 'Director', 'hoge' => 'hogeeeeee') ); // array_map()を使って、index=hogeを抽出/加工。 参考: https://www.php.net/manual/ja/function.array-map.php $names = array_map( function($person) { // 'hoge'を持たないものは無視 if (!empty($person['hoge'])){ return ['NAME' => ">>>" . $person['hoge']]; } }, $data ); print_r($names); // --- *1 // コールバック関数を使用して、空配列を除去する処理 $function = function($element) use ($names) { if (!empty($element)) { return $element; } }; // array_filter()にコールバック関数として先の関数を指定する 参考: https://www.php.net/manual/ja/function.array-filter.php // array_values()がindexを振り直してくれる 参考: https://www.php.net/manual/ja/function.array-values.php $result = array_values(array_filter($names, $function)); print_r($result); // --- *2
*1 -- ただ抽出/加工したもの。空のコンテンツができてしまう。
Array ( [0] => [1] => [2] => Array ( [NAME] => >>>hogeeeeee ) )
*2 -- indexが整い、目的のものが取り出される。indexの振り直しを行わなかった場合は[2] => Array....という感じになる
Array ( [0] => Array ( [NAME] => >>>hogeeeeee ) )
dockerコンテナの中でviコマンドが使えないとき
こういうエラーが出た時の話
# vi /etc/my.cnf bash: vi: command not found
私の環境では、rootユーザーのときこんな感じで apt-get
が使えたのでそこからvimを入れることにしました。
# yum -v bash: yum: command not found # apt-get -v apt 1.4.9 (amd64) # apk -v bash: apk: command not found
🌾 vim/vi の違いがわかんなかったのでこれを読んだ www.softel.co.jp
- とりあえずアップデートをかける
# apt-get update -略- Fetched 7949 kB in 3s (2533 kB/s) Reading package lists... Done
- vim をインストール(途中で続けるか聞かれるので
Y
と答える)
# apt-get install vim Reading package lists... Done Building dependency tree Reading state information... Done -略- Do you want to continue? [Y/n] Y -略- update-alternatives: warning: skip creation of /usr/share/man/ja/man1/editor.1.gz because associated file /usr/share/man/ja/man1/vim.1.gz (of link group editor) doesn't exist update-alternatives: warning: skip creation of /usr/share/man/man1/editor.1.gz because associated file /usr/share/man/man1/vim.1.gz (of link group editor) doesn't exist
こんな感じで完了
# vim hoge.txt # vi hoge.txt
どちらでも使えるようになりました。
シングルコーテーションとダブルコーテーションの使い分けに気をつけること
シングルコーテーションは「文字列中の変数を変数値に置換する」
ダブルコーテーションは「文字列中の変数を変数値に置換しない」くらいにおもっていたけど、そういうわけでもなく。
以下のように改行コードなんかの変換も担っているようで、 echo
した時とかに違いが出たりする。
なんでシングルコーテーションだとpreg_replace
で変換されないのかはちょっとわからない...
$シングルコーテーション = '北見の\r\nロマンを\nそのままパック!!'; $ダブルコーテーション = "北見の\r\nロマンを\nそのままパック!!"; $シングルコーテーション変換後 = preg_replace('/\\r\\n|\\r|\\n/m', '', $シングルコーテーション); $ダブルコーテーション変換後 = preg_replace('/\\r\\n|\\r|\\n/m', '', $ダブルコーテーション);
> シングルコーテーション元のメッセージ 北見の\r\nロマンを\nそのままパック!! > シングルコーテーション変換後のメッセージ 北見の\r\nロマンを\nそのままパック!! > ダブルコーテーション元のメッセージ 北見の ロマンを そのままパック!! > ダブルコーテーション変換後のメッセージ 北見のロマンをそのままパック!!
2019/07/23 19:00 追記
これでした
https://www.php.net/manual/ja/language.types.string.php