2011-08-17 18 views
5

मेरे पास निम्न तालिका है।

<form method="post" action="test.php"> 
    <input name="id[]" type="text" value="ID1" /> 
    <input name="value[]" type="text" value="Value1" /> 
    <hr /> 

    <input name="id[]" type="text" value="ID2" /> 
    <input name="value[]" type="text" value="Value2" /> 
    <hr /> 

    <input name="id[]" type="text" value="ID3" /> 
    <input name="value[]" type="text" value="Value3" /> 
    <hr /> 

    <input name="id[]" type="text" value="ID4" /> 
    <input name="value[]" type="text" value="Value4" /> 
    <hr /> 

    <input type="submit" /> 
</form> 

और test.php फ़ाइल

<?php 

    $myarray = array($_POST); 
    foreach ($myarray as $key => $value) 
    { 
    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 
    } 

?> 

लेकिन यह केवल इस लौटा रहा है: <p>0</p><p>Array</p><hr />

क्या मैं गलत कर रहा हूँ?

+0

क्या कोई कारण है कि आप एक ही नाम में एकाधिक टेक्स्टफील्ड एकत्र करने का प्रयास कर रहे हैं? अगर आप इस बारे में चिंतित नहीं हैं कि यह कितना सुंदर दिखता है, तो 'echo "

"। print_r ($ मान, TRUE)। "

"; 'आपका मित्र हो सकता है। – KyleWpppd

+0

@ केली - अंत में यह डीबी अपडेट करने के लिए inputes की एक बड़ी तालिका होगी। – Iladarsda

+0

आप टेबल को कैसे भर रहे हैं? क्या '* .sql' फ़ाइल एक सभ्य पसंद नहीं होगी मान लीजिए कि पाठ कहीं पहले मौजूद है? – KyleWpppd

उत्तर

11
<?php 

foreach ($_POST as $key => $value) { 
    echo '<p>'.$key.'</p>'; 
    foreach($value as $k => $v) 
    { 
    echo '<p>'.$k.'</p>'; 
    echo '<p>'.$v.'</p>'; 
    echo '<hr />'; 
    } 

} 

?> 

इस काम करेंगे का उपयोग कर अपने "id" और "मूल्य" सरणियों का उपयोग कर सकते, अपने पहले समाधान सरणी मुद्रित करने के लिए कोशिश कर रहा है, क्योंकि आपके मूल्य एक सरणी है।

1

बस:

foreach ($_POST as $key => $value) { 

    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 

} 
+1

इसके अलावा, आप कर सकते हैं 'print_r ($ _ POST)' या 'var_dump ($ _ POST)' का उपयोग कर सरणी को विज़ुअलाइज़ करें। – TJHeuvel

+1

आप 'value' echo 'नहीं कर सकते क्योंकि यह' id' और 'value' keys – Phil

+0

@ फिल अच्छा दोनों के लिए एक सरणी है, आप निश्चित रूप से एक सरणी echo कर सकते हैं =) – Headshota

1

आप $myarray करने के लिए पहले तत्व के रूप में $_POST सरणी जोड़ रहे हैं। आप इसे संदर्भित करने के लिए चाहते हैं, तो बस करो:

$myarray = $_POST; 

बहरहाल, यह शायद आवश्यक नहीं है, जैसा कि आप सिर्फ $_POST के माध्यम से यह कॉल कर सकते हैं अपनी स्क्रिप्ट में।

0

$_POST स्वयं में एक सरणी है, आपको इसे बाहर निकालने की आवश्यकता नहीं है। आपने जो किया वह $_POST सरणी को एक नई सरणी के अंदर घोंसला है। यही कारण है कि आप Array प्रिंट करते हैं। करने के लिए इसे बदलें:

foreach ($_POST as $key => $value) { 

    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 

} 
0

$ _POST पहले से ही एक सरणी है। इसे आजमाएं:

foreach ($_POST as $key => $value) { 
    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 
} 
5

$ _POST पहले से ही एक सरणी है, इसलिए आपको इसके चारों ओर सरणी() को लपेटने की आवश्यकता नहीं है।

ऐसा करें:

<?php 

for ($i=0;$i<count($_POST['id']);$i++) { 

    echo "<p>".$_POST['id'][$i]."</p>"; 
    echo "<p>".$_POST['value'][$i]."</p>"; 
    echo "<hr />"; 

} 

?> 

नोट: यह काम करता है क्योंकि आपके id और value सरणियों सममित हैं। यदि उनके पास तत्वों की विभिन्न संख्याएं थीं तो आपको एक अलग दृष्टिकोण लेने की आवश्यकता होगी।

+0

यह 'retutn जाएगा

आईडी

सरणी


मूल्य

सरणी


' 4. का केवल 2 प्लस मैं फ़ील्ड का मान प्रदर्शित करना चाहते हैं - क्या इनपुट में डाला गया था। – Iladarsda

+0

सही, क्षमा करें, उस भाग को याद किया जहां आपका नाम पैराम सरणी है। मैं संपादित करूंगा। –

+1

इस विधि के साथ सावधान। पाठ इनपुट के लिए यह ठीक है लेकिन यदि इनपुट मिश्रित होते हैं (टेक्स्ट और चेकबॉक्स कहें), तो गणना अनचेक चेकबॉक्स – Phil

1

आप एक सरणी में $_POST सरणी क्यों लपेट रहे हैं?

आप निम्न

// assuming the appropriate isset() checks for $_POST['id'] and $_POST['value'] 

$ids = $_POST['id']; 
$values = $_POST['value']; 

foreach ($ids as $idx => $id) { 
    // ... 
} 

foreach ($values as $idx => $value) { 
    // ... 
} 
0

क्योंकि आप सरणियों नेस्ट किया है, तो मैं वास्तव में एक पुनरावर्ती दृष्टिकोण की सिफारिश:

function recurse_into_array($in, $tabs = "") 
{ 
    foreach($in as $key => $item) 
    { 
     echo $tabs . $key . ' => '; 
     if(is_array($item)) 
     { 
      recurse_into_array($item, $tabs . "\t"); 
     } 
     else 
     { 
      echo $tabs . "\t" . $key; 
     } 
    } 
} 

recurse_into_array($_POST); 
23

foreach छोरों ठीक काम करते हैं, लेकिन आप भी कर सकते हैं बस

print_r($_POST); 

या एक में सुंदर मुद्रण के लिए ब्राउज़र:

echo "<pre>"; 
print_r($_POST); 
echo "</pre>"; 
1

हाल ही में इस 'implode' में आया था।

आउटपुट एरे के लिए उपयोगी हो सकता है। http://in2.php.net/implode

echo 'Variables: ' . implode(', ', $_POST); 
+0

ध्यान दें कि यह मानों को आउटपुट करेगा, लेकिन चाबियाँ नहीं – billrichards

संबंधित मुद्दे