ホームページ  >  記事  >  バックエンド開発  >  PHPのカスタム関数と内部関数の解説

PHPのカスタム関数と内部関数の解説

小云云
小云云オリジナル
2018-03-01 13:34:582073ブラウズ

1. 変数スコープ
変数のスコープとも呼ばれます。変数のスコープは、変数が定義されているコンテキスト (有効スコープでもあります) です。
ほとんどの PHP 変数には 1 つのスコープしかなく、この 1 つのスコープの範囲も同様です。導入された include ファイルと require ファイルが含まれます。

グローバル キーワード: 関数内で global キーワードを使用してグローバル変数にアクセスできます

$GLOBALS やその他のスーパーグローバル配列も使用できます

例:

$str = 'xxxx';
function test(){
//方法一:
global $str;
echo $str;
//方法二
//echo $GLOBALS['str']
}

2. 静的変数
静的変数は単なるローカル関数ドメインに存在しますが、プログラムの実行がこのスコープを離れてもその値は消えません

静的キーワード
初期化されるのは一度だけです
初期化中に値を割り当てる必要があります
関数が実行されるたびに値が保持されます実行される
静的に変更された変数はローカルであり、関数内でのみ有効です
関数の呼び出し数を記録できるため、特定の条件下で再帰を終了できます

2.1、グローバル変数、静的変数

<?php

/**
 * 写出如下程序的输出结果:
 * <?php
 *
 * $count = 5;
 * function get_count()
 * {
 *     static $count;
 *     return $count++;
 * }
 * echo $count;
 * ++$count;
 *
 * echo get_count();
 * echo get_count();
 * 
 * ?>
 *
 */

$count = 5;
function get_count()
{
    static $count;
    return $count++;
}


echo $count;//5
++$count;

//这里还涉及到运算符:递减NULL值没有效果,但是递增NULL值为1
echo get_count();//null,第一次定义的static $count,内容为null,现返回内容null,再null++,结果为1
echo get_count();//1,static $count = 1,现返回1,再递增


2.2、関数転送

<?php


$var1 = 5;
$var2 = 10;


function foo(&$my_var)
{
    global $var1;
    $var1 += 2;
    $var2 = 4;
    $my_var += 3;
    return $var2;
}


$my_var = 5;
echo foo($my_var). "\n";//4
echo $my_var. "\n";//8
echo $var1;//7
echo $var2;//10
$bar = &#39;foo&#39;;
$my_var = 10;
echo $bar($my_var). "\n";//4


2.3, 関数参照 return

从函数返回一个引用,必须在函数声明和指派返回值给一个变量都是用引用运算符&
<?php

function &myFunc()
{
    static $b = 10;
    return $b;
}

echo myFunc();//10

$a = &myFunc();//此步a直接引用到b的地址

$a = 100;//修改a的值,相当于修改b的值

echo myFunc();//100 ,因为b是一个静态变量,该值会保留


3. 外部ファイルのインポート
パス名が指定されている場合はパスに従って検索、そうでない場合は include_path から検索
include_path がない場合は、include_path が存在するディレクトリから検索呼び出しスクリプト ファイルが配置され、現在の作業ディレクトリ

ファイルがインクルードされると、それに含まれるコードはインクルードが配置されている行の変数スコープを継承します。上記のいずれも見つからない場合は、次のエラーまたは警告が表示されます。 require と require_once: 失敗すると、致命的レベルのエラーが生成され、プログラムが停止します。
include および include_once: 失敗した場合に警告レベルのエラーのみが生成され、プログラムは実行を継続します。

2 つの唯一の違いは、インクルードされたファイル コードが既に存在する場合、そのコードはインクルードされなくなることです

4. システム組み込み関数
4.1、時刻および日付関数
date() //タイムスタンプのフォーマット
strtotime( ) //英語のテキストを変換します 日付と時刻を Unix に解析します timestamp
mktime() //整数 Unix timestamp
time() //現在の時刻タイムスタンプを取得します
microtime() //ミリ秒を取得します
date_default_timezone_set() //デフォルトのタイムゾーン

4.2、ip 処理関数
long2ip: 長整数を文字列形式のドット付きインターネット標準形式アドレス (IPV4) に変換します
ip2long: IPV4 文字列インターネットプロトコルを長整数数値に変換します

4.3、印刷関数
echo()
カンマ区切りで複数の値を一度に出力できます。 echo は言語構造体であり、実際の関数ではないため、式の一部として使用することはできません。

print(): 単純型変数の値 (int、string など)
関数 print() は値 (パラメータ) を出力し、文字列が正常に表示された場合は true を返し、それ以外の場合は false を返します。

print_r(): 複合型変数 (配列、オブジェクトなど) の値を出力できます
配列はキーと値の囲まれたリストの形式で表示されますが、文字列と数値を単純に出力できます、 Array から始まります。ただし、ブール値と NULL を出力する print_r() の結果は、すべて "n" を出力するため、意味がありません。したがって、var_dump() 関数を使用する方がデバッグに適しています。
変数に関する人間が判読できる情報を出力します。文字列、整数、または浮動小数点が指定された場合、変数の値自体が出力されます。配列が指定された場合、キーと要素は特定の形式で表示されます。オブジェクトは配列に似ています。 print_r() は配列ポインタを最後に移動することに注意してください。ポインタを先頭に戻すには、reset() を使用します。

var_dump()
この関数は、式のタイプや値など、1 つ以上の式に関する構造情報を表示します。配列は値を再帰的に展開し、インデントによって構造を示します。
変数の型と長さを決定し、変数の値を出力します。変数に値がある場合は、変数の値が出力され、データ型が返されます。この関数は、式のタイプや値など、1 つ以上の式に関する構造情報を表示します。配列は値を再帰的に展開し、インデントによって構造を示します。

var_export(): 変数の文字列表現をエクスポートまたは返します
この関数は、関数に渡された変数に関する構造情報を返します

関数の 2 番目のパラメーターを TRUE に設定することで、変数の表現を返すことができます。有効な PHP コードを返します。

var_dump和print_r的区别:
var_dump返回表达式的类型与值而print_r仅返回结果,相比调试代码使用var_dump更便于阅读。

var_dump和var_export的区别:
var_export() 函数返回关于传递给该函数的变量的结构信息,是合法的 PHP 代码,可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示
var_dump() 打印变量的相关信息

printf():根据格式进行输出
sprintf():根据格式转换字符串,并返回


4.4、シリアライズとデシリアライズunserialize

<?php   
$a = array(&#39;a&#39; => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');   

//序列化数组   
$s = serialize($a);  
echo $s;  
//输出结果:a:3:{s:1:"a";s:5:"Apple";s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";}   
echo '<br /><br />';  
  
//反序列化  
$o = unserialize($s);  
print_r($o);  
//输出结果 Array ( [a] => Apple [b] => banana [c] => Coconut )


4.5、json_encodeとjson_decode

<?php 
$a = array(&#39;a&#39; => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//序列化数组
$s = json_encode($a);
echo $s;
//输出结果:{"a":"Apple","b":"banana","c":"Coconut"}
echo '<br /><br />';

//反序列化
$o = json_decode($s);

在上面的例子中,json_encode输出长度比上个例子中serialize输出长度显然要短


4.6、文字列関数php文字列の使用法の概要



4.7、配列関数
php 配列操作

関連する推奨事項:


ログを記録するためのphpカスタム関数

どの送信方法を決定するためのPHPカスタム関数

JSの組み込み関数とカスタム関数の使い方

以上がPHPのカスタム関数と内部関数の解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。