1

フォームを送信するための変数とテキスト inisde を含む次のコードがあります。私の問題は、foreach関数など、そのテキスト内でphpを実行する方法がわからないことです。

$somearray;

$variable = <<<END

Hello world foreach($somearray as $v){echo $v} //this does not work of course in my case.

END;

あなたが助けていただければ幸いです。ありがとうございました


printf を使用して a1 と a2 を出力すると、変数 a1 の値は 5 になり、a2 の値は 4 になりますか?

はい。それで合っています。ただし、尋ねるよりも試して見る方が簡単なので、少し奇妙な質問です。

したがって、malloc を使用してメモリを割り当て、そのメモリ空間内のポイントを割り当て、再度 malloc を使用してメモリを割り当てると、メモリの別の部分へのポイントが存在しますが、メモリの最初の部分はまだ存在しますか?

それは正しいです。malloc()を使用して解放するまで「存在する」メモリを割り当てるfree()realloc()、データを別のメモリに移動して古いメモリの場所を解放する可能性のある を実行します。それに関するドキュメントを読むことをお勧めします。少なくともマニュアルページ

また、コードにエラーがあります。比較の代わりに割り当てを使用し、変数iが定義されていません。を含む修正版を次に示しますprintf()

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *a,*a1,*a2;
    int i;

    for (i=1; i<=2; i++) {
        a = malloc(sizeof(int));
        if (i==1)
            a1 = a;
        else if (i==2)
            a2 = a;
    }
    *a1=5;
    *a2=4;

    printf("a1=%d, a2=%d\n", *a1, *a2);

    free(a1);
    free(a2);

    return EXIT_SUCCESS;
}

それが役に立てば幸い。幸運を!

4

2 に答える 2

1

<<<END&は引用符を使用するEND;ことと同義であり、\"100 回使用することはありません。文字列内でコードを実行することはできません。代わりに結果を連結する必要があります。

あなたがやろうとしていることは、基本的にこれです:

$variable = "foreach($somearray as $v) echo $v;";

本当にこれが必要な場合:

$variable = "";
foreach ($somearray as $v) $variable .= $v;
于 2013-01-09T14:16:06.650 に答える
0

<<<構文は複数行の文字列形式です。ブロック内のすべては文字列の一部です。そこにPHPコードを含めることはできません。

そこにループブロックが必要な場合は、<<<ブロックの前にその文字列を変数として生成し、その方法で文字列に含める必要があります。

$ins = '';
foreach($myarray as $val) {$ins .= "blah, {$val}, etc, ";}

$variable = <<<END
    Hello world {$ins}
END;

(あなたが与えた簡単な例では、foreach()同じように簡単に使用できることにも注意してくださいimplode()

于 2013-01-09T14:33:23.530 に答える