2017-06-03 13 views
0

このような質問をするのがよいかどうかはわかりませんが、PHP変数の仕組みを理解したいと思います。我々はすべて私たちは、このような別の変数に変数を追加できることを知っているように:変数名を任意に発行したPHP変数

*

が不足していくつかのテキストしかし、ここで質問:

$abc = "Some Text" 
$ab_apnd = "{$abc} missing*"; 
echo $ab_apnd; 

次に、このような出力が表示されます同じテキストを$_POSTに渡すと動作しません。

# $_POST['abc'] = "{$abc}" // through a form not from php code // 
$abc = "Some Text"; 
$ab_apnd = $_POST['abc'] . " missing*"; 
echo $ab_apnd; 

は今、これは、このような出力が表示されます:

{ABC}欠落しています*。

なぜこのようなことが起こったのか教えていただければ幸いです。ありがとうございました。

+0

試し '$$ _ POST [ 'ABC']'、これは実際のアプリでは非常に危険なTODOですが。 http://php.net/manual/en/language.variables.variable.php –

+0

@LawrenceCheroneが空白になりました。 – Query3j

+0

奇妙なことに、PHPはポスト変数を文字列として扱うので、結果はおそらく '{$ abc} missing *'です。 –

答えて

0

変数名として変数値を使いたいと思います。これにはeval関数を使うことができます。

<form action="" method=post>  
    <input type='text' name="abc"> 
    <input type="submit"> 
</form> 

<?php  
    $abc = "Some Text";  
    eval('$ab_apnd ="' . $_POST['abc'] . ' missing*";'); 
    echo $ab_apnd; 
?> 
+0

なぜ私は使用されるような簡単な方法で達成できないのですか? – Query3j

+0

可変内容のコードを変更したいからです。変数内容はデータを移動しますが、コードは移動しません。実際これはプログラミングの基本構造ロジックです。このコンテンツをコードとして使用したい場合は、これをプログラミング言語のコンパイラ/インタプリタに伝える必要があります。 Eval関数はこれを行います。 –

+0

おかげでそれはそれを知って感謝 – Query3j

0

なぜこれが非常に複雑にする:

<?php 
    $_POST['abc']= "some text"; 
    $ab_apnd = $_POST['abc'] . ' missing*'; 
    echo $ab_apnd; 
?> 
関連する問題