PHP 標準入力の値を取得

標準入力とは?

プログラムに渡される値やデータの標準(デフォルト)の入力元のことです。 標準の入力経路というのは、基本的には「キーボードからの入力」を意味します。

標準入力 = standard input の意味で、stdinと略されて使用されることが多いです。

標準入力の値を取得する方法

echo 'あなたの名前を教えてください。: ';
$stdin_name= trim(fgets(STDIN)) ;

echo $stdin_name . 'さん、あなたの年齢は何歳ですか? :';
$stdin_age = trim(fgets(STDIN));

echo $stdin_name . 'さん(年齢:' . $stdin_age .')、ご登録ありがとうございます!';

結果

あなたの名前を教えてください。: aaa
aaaさん、あなたの年齢は何歳ですか? :30
aaaさん(年齢:30)、ご登録ありがとうございます!

fgets(STDIN)の解説

trim():空白削除 fgets():引数のファイルポインタから1行取得 STDIN:標準入力を表す定数

PHP 多次元配列の取得

//次の配列を使用して、2という値を出力。
$test = array(
  array(
    array(
      1,1,1
    ),
    array(
      1,1,1
    ),
    array(
      1,1,1
    )
  ),
  array(
    array(
      1,1,2
    ),
    array(
      1,1,1
    )
  )
);

echo $test[1][0][2];


//上の配列をfor文をつかって全て出力  

for($i = 0; $i < count($test); $i++){
    
    for($j = 0; $j < count($test[$i]); $j++){
        
        for($k = 0; $k < count($test[$i][$j]); $k++){
            
            echo $test[$i][$j][$k] . ' ';
        }
    }
}

//結果:1 1 1 1 1 1 1 1 1 1 1 2 1 1 1

//foreach文を使った出力もしてください。

foreach($test as $key =>$first){
    
    foreach($first as $second){
        
        foreach($second as $third){
            
            echo $third .' ';
        }
    }
}
//結果:1 1 1 1 1 1 1 1 1 1 1 2 1 1 1

PHP 複数の配列 keyが同じものを合計して配列を作る

2つのInteger(整数)の配列を、それぞれ同じ順番(添字)の値が合計された値を持つ配列を新たに作る関数を作成 作られる配列は2つの入力された配列のうち少ない個数の配列の個数とします。

$nums_1 = [0,1,2,3];
$nums_2 = [0,1,2,3,4,5];


function nums_puls(array $nums_1, array $nums_2){
    
    $nums_count = count($nums_1);
    
    if($nums_count >  count($nums_2)){
    
        $nums_count = count($nums_2);
    }

    
    $nums_puls = [];
    
    for($i = 0; $i < $nums_count; $i++){

        $num_puls = $nums_1[$i] + $nums_2[$i];

        $nums_puls[] += $num_puls;
        
    }
    
    return $nums_puls;
    
}
````

PHP CSSに自動で日付を入れてキャッシュを読み直す

CSSの読込がうまくいかないことがあるので、CSSに自動で日付が入るようにして毎回違うCSSを読み込むと前のキャッシュが残らない。

方法としては、

?<?php echo date("Ymd-Hi"); ?>

CSSに加える。

<link rel="stylesheet" href="./css/cm_pc.css?<?php echo date('Ymd-Hi'); ?>" type="text/css">

これが一番簡単な方法かと!

サーバにアップする際に、『.html』をPHPとして動作させるために必要な『htaccess』を一緒にあげることをお忘れなく!

htaccessでMIMEタイプを設定して、『.html』をPHPとして実行する

<FilesMatch "\.html$">
 AddType application/x-httpd-php .html
</FilesMatch>

この3行を書いて.htaccessファイルにしましょう。

PHP 簡単なバリデーションを作成

バリデーションのtrue か falseを判定する関数を作成

$nums = [0,1,2];

$check = "";

function check($nums){
    
    if (empty($nums)){
        echo "空です。" .PHP_EOL;
        return false;
    }
    
    if( !is_array($nums)){
        echo "配列ではありません。" .PHP_EOL;
        return false;
    }
    
    foreach($nums as $num){
        
        if( !is_numeric($num)){
            echo "数字ではありません。" .PHP_EOL;
            return false;
        }
    }
    
    return true;
}
  1. 空の変数を用意 $check = "";
  2. 関数作成 function check($nums){}
  3. 条件分岐でチェックしたい項目を判定 if( empty($nums) )
  4. falseの時にエラーメッセージ出力、falseを返す
  5. 関数内の最後にエラーがなかったら trueを返す

バリデーションを通過して処理させる

例えば、数字の配列を3乗にして返す関数内で上記のバリデーションを作成したい時

function nums_3power($nums){
    
    $check = check($nums);
    
    if($check){
        
        for($i = 0; $i < count($nums); $i++){

            $nums[$i] = $nums[$i] **3;
            echo $nums[$i] .PHP_EOL;

        }   
    }  
    
}

nums_3power($nums);
  1. バリデーションの関数を変数に入れる $check = check($nums);
  2. trueの時だけ処理させる if($check){}

PHP foreachで配列の値を再格納

phpでforeachで値を配列に再格納する方法です。

配列のキーを指定して格納することが必要です。

例えば、配列の数字を2乗したものを配列に再格納する場合

$nums= [3,4,5];

foreach($nums as $key => $num){
    
    echo $num . PHP_EOL;
    $nums[$key] = $num ** 2;
}

var_dump($nums);

結果は下記のようになります。

3
4
5

array(3) {
  [0]=>
  int(9)
  [1]=>
  int(16)
  [2]=>
  int(25)
}

PHP 数値の累乗を計算

PHP の関数で『pow(【基数】,【指数】)』があります。

基数:基となる数字(10の2乗なら、10) 指数:累乗したい数字(10の2乗なら、2)

pow(10,2)

関数もありますが、PHP5.6以降では下記の書き方もできます。

【基数】 ** 【指数】

10 ** 2

『**』が使えるのは便利です。