2010-08-15 34 views
21

Tôi có một POST bằng PHP mà tôi sẽ không bao giờ biết tên của các trường biến mà tôi sẽ xử lý.

Tôi có một chức năng mà sẽ lặp qua các giá trị (tuy nhiên tôi cũng muốn nắm bắt được tên biến mà đi với nó.)

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

Khi tôi tìm ra cách để lấy các tên biến, tôi cũng cần phải tìm ra cách tôi có thể làm cho hàm đủ thông minh để phát hiện và lặp qua các mảng cho một biến nếu chúng có mặt (ví dụ: nếu tôi có một số giá trị hộp kiểm.)

+2

Câu hỏi này chắc chắn là không cục bộ, bởi vì tôi đã trải qua một tình huống tương tự . – IcyFlame

Trả lời

41

Nếu bạn chỉ muốn in toàn bộ mảng $ _POST để xác minh dữ liệu của bạn đang được gửi đi một cách chính xác, sử dụng print_r:

print_r($_POST); 

Để đệ quy in nội dung của một mảng:

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); 
     } 
    } 
} 

Áp dụng một số padd ing vào mảng lồng nhau:

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 trả về true nếu biến nhất định là một mảng.

Bạn cũng có thể sử dụng array_keys để trả về tất cả các tên chuỗi.

5

Bạn có thể có vòng lặp foreach hiển thị chỉ mục cùng với giá trị:

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

Đối với mảng kiểm tra, sử dụng is_array() chức năng:

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

Nếu bạn muốn để phát hiện các lĩnh vực mảng sử dụng một mã như thế này:

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

Đó là tốt hơn để sử dụng:

if (${'_'.$_SERVER['REQUEST_METHOD']}) { 
    $kv = array(); 
    foreach (${'_'.$_SERVER['REQUEST_METHOD']} as $key => $value) { 
     $kv[] = "$key=$value"; 
    } 
} 
Các vấn đề liên quan