web-dev-qa-db-ja.com

値とともに$ _POST変数名を出力します

私はPOST in PHPを持っているので、処理しようとしている変数フィールドの名前を常に知ることはできません。

値をループする関数があります(ただし、それに伴う変数名もキャプチャしたいです)。

foreach ($_POST as $entry)
{
     print $entry . "<br>";
}

変数名を取得する方法を理解したら、変数の配列が存在する場合(つまり、チェックボックス値がある場合)を検出してループするために関数をスマートにする方法を理解する必要があります

21
Joseph U.

データが正しく送信されていることを確認するために$ _POST配列全体を印刷する場合は、 print_r を使用します。

print_r($_POST);

配列の内容を再帰的に印刷するには:

printArray($_POST);

function printArray($array){
     foreach ($array as $key => $value){
        echo "$key => $value";
        if(is_array($value)){ //If $value is an array, print it as well!
            printArray($value);
        }  
    } 
}

ネストされた配列にいくつかのパディングを適用します。

printArray($_POST);

/*
 * $pad='' gives $pad a default value, meaning we don't have 
 * to pass printArray a value for it if we don't want to if we're
 * happy with the given default value (no padding)
 */
function printArray($array, $pad=''){
     foreach ($array as $key => $value){
        echo $pad . "$key => $value";
        if(is_array($value)){
            printArray($value, $pad.' ');
        }  
    } 
}

is_array は、指定された変数が配列の場合にtrueを返します。

すべての文字列名を返すarray_keysを使用することもできます。

41

Foreachループに値とともにインデックスを表示させることができます。

foreach ($_POST as $key => $entry)
{
     print $key . ": " . $entry . "<br>";
}

配列チェックについては、 is_array() 関数を使用します。

foreach ($_POST as $key => $entry)
{
     if (is_array($entry)) {
        foreach($entry as $value) {
           print $key . ": " . $value . "<br>";
        }
     } else {
        print $key . ": " . $entry . "<br>";
     }
}
5
Jeffrey Blake

使用するのがはるかに良いです:

if (${'_'.$_SERVER['REQUEST_METHOD']}) {
    $kv = array();
    foreach (${'_'.$_SERVER['REQUEST_METHOD']} as $key => $value) {
        $kv[] = "$key=$value";
    }
}
1
ascci

配列フィールドを検出する場合は、次のようなコードを使用します。

foreach ($_POST as $key => $entry)
{
    if (is_array($entry)){
        print $key . ": " . implode(',',$entry) . "<br>";
    }
    else {
        print $key . ": " . $entry . "<br>";
    }
}
0
silvo