变量的变量,PHP和你_PHP
变量的变量,PHP 和 你
在我最近做的一个项目中,我发现了一个新的概念,关于在PHP中使用变量的变量。在我的程序中,我需要在一个页面同时更新多个记录,在我经过相当长时间的痛苦思索之后,脑海中偶然地闪现出了变量的变量(variable variable)这一概念,所有的困惑就一扫而光了。
介绍
什么叫作变量的变量?根据PHP手册,变量的变量是指取得一个变量的值并把它作为另一个变量的变量名。这表述显得相当的直接,容易和那些在一个句子中使用“变量”这个词弄混淆。给一个简单的例子,你定义一个变量 --- x 等于 this --- 然后定义一个变量的变量,意味着你把 x 的值作为新变量的名,在这个例子中,这个新变量的值是 is cake。用PHP来表示如下:
$x = "this";
$$x = "is cake";
?>
这个符号$$是在PHP中对变量的变量的表示方法。现在我们可以用两种不同的方式来引用这两个变量 $x 和 $$x 了。
echo "$x ${$x}";
?>
echo "$x $this";
?>
上面两段程序都将输出 this is cake。注意,在echo语句中$$x被写成${$x},这是让PHP知道你要输出的是变量的变量而不是一个$字符与$x变量。
你是不是仍很迷惑?哦,也许吧,你想要一些更深入更有用的例子?下一节,我将向你展示怎样用变量的变量在一个页面编辑多条记录的。
例子
假设你已有一个MySQL数据库,保存了对一些感兴趣的站点的链接,库中有一个表submissions,字段如下:
SubmissionID
PostedBy
Link
Description
Approved
现在你想显示在表中所有的已创建但没有被认可的链接,这个编辑的页面应可以更正一些输入时的错误,并用适当的单选按钮来为每一个记录设置是否允许(Approved),然后一次把更新后的记录都提交到表中。
首先,当你从数据库出提取所有的记录并显示出来时,你必须为每一个记录设置一个唯一的名字,这将让我们在提交时可以循环地辩别出各个记录的值。代码如下:
//初始化变量的记数器
$index = 0;
$index_count = 0;
echo ";
echo "n";
echo "
n"; Posted By
Link ".
"Description
Approved
/*********
假定我们已从数据库中检索出记录到一个数组中
$myrow = mysql_fetch_array().
下面的 do...while 循环根据名字为每一个$xstr变量分配了一个值并且连接了$index 的值到结尾,以0为开始。
这样,这个循环的第一次时,$SubmissionIDStr 的值就是 SubmissionID0 ,第二次就是 SubmissionID1 ,以此类推。
***********/
do {
$SubmissionIDStr = SubmissionID.$index;
$PostedByStr = PostedBy.$index;
$LinkStr = Link.$index;
$DescriptionStr = Description.$index;
$ApprovedStr = Aprroved.$index;
//这一段将在屏幕上显示值,以每行一条记录。
printf("
n",
YesNo
$SubmissionIDStr, $myrow["SubmissionID"], $PostedByStr, $myrow["PostedBy"], $LinkStr, $myrow["Link"],
$DescriptionStr, $myrow["Description"], $ApprovedStr, $ApprovedStr);
//每个循环记数器加1
$index++;
$index_count++;
} while ($myrow = mysql_fetch_array($result));
// 创建一个索引记数器index_count来跟踪所有的记录数
echo "n";
echo "n";
?>
提交以后,我们利用$index_count变量再一次循环遍历页面上所有的变量,然后,分配这些变量给另一些变量,这就用到了变量的变量。
//这个循环遍历所有页面上显示的记录
for ($index = 0; $index = $counter; $index++) {
/*****
这部分用我们在前面创建的名字设置了新的变量
从0开始,直到$index_count
*****/
$varSubmissionID = 'SubmissionID'.$index;
$varPostedBy = 'PostedBy'.$index;
$varLink = 'Link'.$index;
$varDescription = 'Description'.$index;
$varApproved = 'Approved'.$index;
/******
这是变量的变量部分,把每个值分配给每个新变量的名。
例如,第一次循环时,分配给记录 SubmissionID0 是从前面得来的值,我们用变量的变量来了取到它。
*******/
$SubmissionIDvalue = $$varSubmissionID;
$PostedByvalue = $$varPostedBy;
$Linkvalue = $$varLink;
$Descriptionvalue = $$varDescription;
$Approvedvalue = $$varApproved;
//更新数据库
$sql = "UPDATE submissions SET PostedBy='$PostedByvalue',Link='$Linkvalue',".
"Description='$Descriptionvalue' WHERE SubmissionID=$SubmissionIDvalue'";
$result = mysql_query($sql);
//如果本记录被设置为approved,更新相应的字段 Approved。
if ($Approvedvalue == '-1') {
$sql = "UPDATE submissions SET Approved='-1' WHERE SubmissionID=$SubmissionIDvalue";
$result = mysql_query($sql);
}
}
?>
我希望这有助于你明白这个变量的变量的基本用法,并且在你将来的工作中使用它们提供一些思路。变量的变量这一概念,最初也是让我头痛的东西,但是一旦你知道了它们工作的基本原理时,它们就变成了一块美味的比萨饼。如果有什么问题请让我知道吧。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Index.html は Web ページのホームページ ファイルを表し、Web サイトのデフォルト ページです。ユーザーが Web サイトにアクセスすると、通常、index.html ページが最初に読み込まれます。 HTML (HypertextMarkupLanguage) は Web ページの作成に使用されるマークアップ言語であり、index.html も HTML ファイルです。これには、Web ページの構造とコンテンツに加えて、書式設定とレイアウトに使用されるタグと要素が含まれます。以下は、index.html コードの例です: <

Pinduoduo ソフトウェアは多くの優れた製品を提供し、いつでもどこでも購入でき、各製品の品質は厳しく管理され、すべての製品は正規品であり、多くの優遇ショッピング割引があり、誰もがオンラインで買い物をすることができます。携帯電話番号を入力してオンラインにログインし、オンラインで複数の配送先住所や連絡先情報を追加し、最新の物流動向をいつでも確認できます さまざまなカテゴリの商品セクションが開き、検索して上下にスワイプして購入および注文することができます家から出ることなく利便性を体験することができます.オンライン ショッピング サービスでは、購入した商品を含むすべての購入記録を確認することもでき、数十のショッピング赤い封筒とクーポンを無料で受け取ることもできます.今回、編集者は Pinduoduo ユーザーに詳細なオンライン サービスを提供しました購入した製品の記録を表示する方法。 1. 携帯電話を開き、Pinduoduo アイコンをクリックします。

環境変数は、アプリケーションやプログラムが実行される場所 (または環境) へのパスです。ユーザーはこれらを作成、編集、管理、削除でき、特定のプロセスの動作を管理する場合に便利です。ここでは、Windows で複数の変数を個別に編集することなく、複数の変数を同時に管理するための構成ファイルを作成する方法を説明します。環境変数でプロファイルを使用する方法 Windows 11 および 10 Windows には、ユーザー変数 (現在のユーザーに適用) とシステム変数 (グローバルに適用) の 2 つの環境変数セットがあります。ただし、PowerToys などのツールを使用すると、別の構成ファイルを作成して新しい変数と既存の変数を追加し、それらをすべて一度に管理できます。方法は次のとおりです: ステップ 1: PowerToysPowerTo をインストールする

Linux でコマンド履歴を表示する方法 Linux では、history コマンドを使用して、以前に実行されたすべてのコマンドのリストを表示します。構文は非常に単純です:history History コマンドと組み合わせるオプションには次のものがあります: オプションの説明 -c 現在のセッションのコマンド履歴をクリアします -w コマンド履歴をファイルに書き込みます -r 履歴ファイルからコマンド履歴を再ロードします - n 最近のコマンドの出力数を制限するhistory コマンドを実行するだけで、Linux ターミナルで以前に実行されたすべてのコマンドのリストが表示されます。コマンド履歴の表示に加えて、コマンド履歴を管理したり、以前に実行したコマンドの変更を実行したり、逆に実行したりすることもできます。コマンド履歴を検索したり、履歴を完全に削除したりすることもできます

PHP7 では Strict モードが導入され、開発者が潜在的なエラーを減らすのに役立ちます。この記事では、厳密モードとは何か、および PHP7 で厳密モードを使用してエラーを減らす方法について説明します。同時に、コード例を通じて厳密モードの適用を示します。 1.ストリクトモードとは何ですか? Strict モードは、開発者がより標準化されたコードを作成し、いくつかの一般的なエラーを減らすのに役立つ PHP7 の機能です。厳密モードでは、変数宣言、型チェック、関数呼び出しなどに厳密な制限と検出が行われます。合格

iPhone の通話録音は過小評価されがちですが、iPhone の最も重要な機能の 1 つです。この機能はシンプルであるため非常に重要であり、デバイス上で発信または受信された通話に関する重要な洞察を提供できます。仕事の目的でも、法的手続きの場合でも、通話記録にアクセスできる機能は非常に貴重であることがわかります。簡単に言うと、通話履歴とは、電話をかけたり受けたりするたびに iPhone に作成されるエントリを指します。これらのログには、連絡先の名前 (連絡先として保存されていない場合は番号)、タイムスタンプ、継続時間、通話ステータス (ダイヤル、不在、応答なし) などの重要な情報が含まれています。これらはあなたの通信履歴の簡潔な記録です。通話履歴には、iPhone に保存されている通話履歴ストリップが含まれます

Java のインスタンス変数は、メソッドやコンストラクターではなく、クラスで定義された変数を指します。インスタンス変数はメンバー変数とも呼ばれ、クラスの各インスタンスにはインスタンス変数の独自のコピーがあります。インスタンス変数はオブジェクトの作成時に初期化され、その状態はオブジェクトの存続期間全体にわたって保存および維持されます。インスタンス変数定義は通常、クラスの先頭に配置され、パブリック、プライベート、プロテクト、またはデフォルトのアクセス修飾子など、任意のアクセス修飾子を使用して宣言できます。それは私たちがこれをどうしたいかによって決まります

PHP 関数の紹介 - strpos(): 変数が文字列であるかどうかを確認する PHP では、is_string() は変数が文字列であるかどうかを確認するために使用される非常に便利な関数です。変数が文字列であるかどうかを判断する必要がある場合、 is_string() 関数を使用すると、この目標を簡単に達成できます。以下では、is_string() 関数の使用方法を学び、関連するコード例をいくつか示します。 is_string() 関数の構文は非常に単純です。必要なのはそれだけです
