名前付けされずに定義された関数のこと
<?php $pension = array( "こだわり個人年金"=>'1.186', "年金かけはし"=>'1.063', "たのしみワンダフル"=>'1.081' ); print_r(array_map(function($a){$pay = 500;return $a*$pay;}, $pension));
Array ( [こだわり個人年金] => 593 [年金かけはし] => 531.5 [たのしみワンダフル] => 540.5 )
随机应变 ABCD: Always Be Coding and … : хороший
名前付けされずに定義された関数のこと
<?php $pension = array( "こだわり個人年金"=>'1.186', "年金かけはし"=>'1.063', "たのしみワンダフル"=>'1.081' ); print_r(array_map(function($a){$pay = 500;return $a*$pay;}, $pension));
Array ( [こだわり個人年金] => 593 [年金かけはし] => 531.5 [たのしみワンダフル] => 540.5 )
配列の値に閾値を設けてフィルタリングする。
<?php $track = array( "みずほFG"=> '2.1', "三菱UFJ"=> '3.6', "ティアック"=> '0', "ランド"=> '0', "富士通"=> '-1.0', "住友化"=> '22', "日産自"=> '2.5', "アカツキ" => '1.2' ); $rate = 1; $filter_func = function ($value) use ($rate) { return ($value >= $rate); }; $result = array_filter($track, $filter_func); arsort($result); var_dump($result);
array(5) { [“住友化”]=> string(2) “22” [“三菱UFJ”]=> string(3) “3.6” [“日産自”]=> string(3) “2.5” [“みずほFG”]=> string(3) “2.1” [“アカツキ”]=> string(3) “1.2” }
$rate = 2の時
array(4) { [“住友化”]=> string(2) “22” [“三菱UFJ”]=> string(3) “3.6” [“日産自”]=> string(3) “2.5” [“みずほFG”]=> string(3) “2.1” }
並び替えを数値としてするか文字列としてするか支持するためのオプションです。
<?php $track = array( "みずほFG"=> '2.1', "三菱UFJ"=> '3.6', "ティアック"=> '0', "ランド"=> '0', "富士通"=> '-1.0', "住友化"=> '22', "日産自"=> '2.5', "アカツキ" => '1.2' ); arsort($track, SORT_NUMERIC); var_dump($track); print "<br>"; ksort($track, SORT_STRING); var_dump($track);
array(8) { [“住友化”]=> string(2) “22” [“三菱UFJ”]=> string(3) “3.6” [“日産自”]=> string(3) “2.5” [“みずほFG”]=> string(3) “2.1” [“アカツキ”]=> string(3) “1.2” [“ランド”]=> string(1) “0” [“ティアック”]=> string(1) “0” [“富士通”]=> string(4) “-1.0” }
array(8) { [“みずほFG”]=> string(3) “2.1” [“アカツキ”]=> string(3) “1.2” [“ティアック”]=> string(1) “0” [“ランド”]=> string(1) “0” [“三菱UFJ”]=> string(3) “3.6” [“住友化”]=> string(2) “22” [“富士通”]=> string(4) “-1.0” [“日産自”]=> string(3) “2.5” }
配列の値の数を数える
<?php $array = array( "投資家1" => "強く買いたい", "投資家2" => "売りたい", "投資家3" => "強く買いたい", "投資家4" => "買いたい", "投資家5" => "様子見", "投資家6" => "買いたい", "投資家7" => "買いたい", "投資家8" => "買いたい" ); $board = array_count_values($array); arsort($board); var_dump($board);
array(4) { [“買いたい”]=> int(4) [“強く買いたい”]=> int(2) [“様子見”]=> int(1) [“売りたい”]=> int(1) }
フィーチャーベンチャーキャピタルの2/9と2/6のレポートで、2回以上書かれている単語を見てみます。
http://www.jpx.co.jp/listing/ir-clips/analyst-report/detail/tvdivq0000023hz1-att/ana_re_8462_20180209_1.pdf
http://www.jpx.co.jp/listing/ir-clips/analyst-report/detail/tvdivq0000023hz1-att/ana_up_8462_20180206_2.pdf
<?php $text = "レポート内容(略)"; $appearances = 2; $meishiPosIdArr = array(38, 41, 42, 43, 44, 45, 46, 47); $meishiArr = []; $mecab = new MeCab_Tagger(); $nodes = $mecab->parseToNode($text); foreach($nodes as $node){ if($node->getStat() === MECAB_BOS_NODE || $node->getStat() === MECAB_EOS_NODE){ continue; } if (in_array($node->getPosId(), $meishiPosIdArr)){ $meishiArr[] = $node->getSurface(); } } $retArr = array_count_values($meishiArr); $retArr = array_filter($retArr, function($v) use($appearances){ return ($v >= $appearances); }); arsort($retArr, SORT_NUMERIC); print_r($retArr);
2/9のレポート
Array ( [月] => 10 [Q] => 10 [利益] => 8 [赤字] => 7 [業績] => 5 [経常] => 3 [パラグラフ] => 2 [持分] => 2 [会社] => 2 [株式] => 2 [ファンドレイズ] => 2 [ZMP] => 2 [特] => 2 [子会社] => 2 [利] => 2 [売上] => 2 [幅] => 2 [最終] => 2 [段階] => 2 [ファンド] => 2 [ANEW] => 2 )
2/6のレポート
Array ( [IPO] => 5 [ZMP] => 3 [会社] => 3 [利益] => 3 [株式] => 2 [A] => 2 [ファンド] => 2 [収益] => 2 [M] => 2 [キャピタルゲイン] => 2 [期間] => 2 [黒字] => 2 [株] => 2 [月] => 2 [負] => 2 [経費] => 2 [Q] => 2 [事業] => 2 [状況] => 2 )
頻出単語から推察するに、2/6はIPOが話題に上がっているようですが、2/9は業績に関するレポートに変わっているようですね。
では、ベガコーポレーションのレポートを形態素分析してみましょう。ここでは冒頭のみ。
<?php echo (new MeCab\Tagger())->parse('・ベガコーポレーション(以下、同社)は、家具・インテリア分野でEC を展開 している。自社企画の商品を海外の協力工場で製造し、日本に輸入して ユーザーに供給するビジネスモデルを有するのが特徴である。また、越 境 EC プラットフォームの運営も手掛けている。'); ?>
見やすくします。
<?php $result = explode("\n", rtrim((new MeCab\Tagger())->parse('・ベガコーポレーション(以下、同社)は、家具・インテリア分野でEC を展開 している。自社企画の商品を海外の協力工場で製造し、日本に輸入して ユーザーに供給するビジネスモデルを有するのが特徴である。また、越 境 EC プラットフォームの運営も手掛けている。'))); print_r('<pre>'); var_dump($result); print_r('</pre>');
epelはyumのリポジトリ。
rpmコマンドは、RPMパッケージ(コンパイル済みのバイナリとファイル群)をインストールするもの。
[vagrant@localhost ~]$ mkdir mecab [vagrant@localhost ~]$ cd mecab [vagrant@localhost mecab]$ sudo yum install epel-release [vagrant@localhost mecab]$ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm [vagrant@localhost mecab]$ sudo yum install mecab mecab-devel mecab-ipadic [vagrant@localhost mecab]$ mecab --version mecab of 0.996[vagrant@localhost mecab]$ git clone https://github.com/rsky/php-mecab.git [vagrant@localhost mecab]$ cd php-mecab/mecab [vagrant@localhost mecab]$ sudo yum install libtool [vagrant@localhost mecab]$ phpize [vagrant@localhost mecab]$ make [vagrant@localhost mecab]$ sudo make install [vagrant@localhost mecab]$ sudo php -r "\$h=fopen('/etc/php.ini','a');fwrite(\$h,'extension=mecab.so'.\"\n\");" [vagrant@localhost mecab]$ php -m | grep mecab mecab
例えば、コード、名称、取引値をそれぞれ配列に持っていて、jsonで吐き出したい場合。
<?php $code = array("4579", "3758", "3825"); $name = array("ラクオリア創薬", "アエリア", "リミックスポイント"); $price = array("1728", "1805", "899"); ?> <script type="application/ld+json"> <?php $items = array(); for($i=0; $i<3; $i++){ array_push($items, [ "code" => "$code[$i]", "name" => "$name[$i]", "price" => "$price[$i]" ]); } print(json_encode($items, JSON_UNESCAPED_UNICODE)); ?> </script>
テストデータは、Googleの構造化チェックツールで確認
https://search.google.com/structured-data/testing-tool?hl=ja
例えば、以下のように株価の配列を書き出す。
<?php $array = array( "code" => "4779", "name" => "ラクオリア創薬", "price" => "1728" ); ?> <script type="application/ld+json"> { "code" : "<?php echo $array[code]; ?>", "name" : "<?php echo $array[name]; ?>", "price" : "<?php echo $array[price]; ?>", } </script>
jsonにencodeすれば、吐き出す必要はなし。
<?php $array = array( "code" => "4779", "name" => "ラクオリア創薬", "price" => "1728" ); $json = json_encode($array, JSON_UNESCAPED_UNICODE); ?> <script type="application/ld+json"> <?php print $json; ?> </script>
ヴァーチャルホストの設定
<VirtualHost *:80> DocumentRoot /var/www/html/hoge DirectoryIndex index.html index.php ServerName www.hoge.com ServerAlias hoge.com CustomLog logs/hoge.com-access.log common ErrorLog logs/hoge.com-error.log AddDefaultCharset UTF-8 <Directory "/var/www/html/hoge/"> AllowOverride All </Directory> </VirtualHost>