কীভাবে পিএইচপি অ্যারে ফর্ম ইনপুট অ্যারে পাবেন


91

আমার নীচে ফর্ম রয়েছে যা নীচে পরিচিতি.এফপি পোস্ট করা হয়েছে, এবং ব্যবহারকারী গতিশীলভাবে jquery এর সাথে আরও যুক্ত করতে পারেন।

<input type="text" name="name[]" />
<input type="text" name="email[]" />

<input type="text" name="name[]" />
<input type="text" name="email[]" />

<input type="text" name="name[]" />
<input type="text" name="email[]" />

যদি আমি নীচের কোড দিয়ে পিএইচপি এগুলি প্রতিধ্বনি করি

$name = $_POST['name'];
$email = $_POST['account'];

foreach( $name as $v ) {
print $v;
}

foreach( $email as $v ) {
print $v;
}

আমি এরকম কিছু পাব:

name1name2name3email1email2email3

নীচের কোডের মতো আমি কীভাবে এই অ্যারেগুলি পেতে পারি

function show_Names($n, $m)
{
return("The name is $n and email is $m, thank you");
}

$a = array("name1", "name2", "name3");
$b = array("email1", "email2", "email3");

$c = array_map("show_Names", $a, $b);
print_r($c);

সুতরাং আমার আউটপুট এই মত:

নাম NAME1 এবং ইমেল email1 , আপনাকে ধন্যবাদ
নাম NAME2 এবং ইমেল email2 , আপনাকে ধন্যবাদ
নাম NAME3 এবং ইমেল email3 , আপনাকে ধন্যবাদ

কোন সাহায্য বা পরামর্শের জন্য আপনাকে ধন্যবাদ

উত্তর:


146

তারা ইতিমধ্যে অ্যারে রয়েছে: $nameযেমন রয়েছে তেমন একটি অ্যারে$email

সুতরাং আপনাকে যা করতে হবে তা হ'ল উভয় অ্যারে আক্রমণ করার জন্য কিছুটা প্রসেসিং যুক্ত করা:

$name = $_POST['name'];
$email = $_POST['account'];

foreach( $name as $key => $n ) {
  print "The name is ".$n." and email is ".$email[$key].", thank you\n";
}

আরও ইনপুট পরিচালনা করতে, কেবল প্যাটার্নটি প্রসারিত করুন:

$name = $_POST['name'];
$email = $_POST['account'];
$location = $_POST['location'];

foreach( $name as $key => $n ) {
  print "The name is ".$n.", email is ".$email[$key].
        ", and location is ".$location[$key].". Thank you\n";
}

আপনাকে ধন্যবাদ, আমি যদি অবস্থানের মতো আরও একটি ইনপুট যুক্ত করি [], আমি কীভাবে এটি যুক্ত করতে পারি?
থম

4
মূলত, আপনি কেবল প্যাটার্নটি প্রসারিত করুন। উপরের আমার সম্পাদনাটি দেখুন ... কোনও অতিরিক্ত ইনপুটও অ্যারে হবে যখন আপনি তাদের assign _POST থেকে বরাদ্দ করবেন (ধরে নিবেন যে এই ক্ষেত্রের সাথে যেমন এইচটিএমএলতে সেই নামের সাথে একাধিক ইনপুট রয়েছে)।
জেফ্রি ব্লেক

4
জেফ্রি, আমি যদি অ্যারের ক্রমটিতে বিশ্বাস করতে পারি তবে আমি অবাক হই। যে, আমরা নিশ্চিত যে $emails[1]নাম ব্যবহারকারীর সাথে সম্পর্কিত $name[1]? আমি মনে করি আমি অতীতেও এগুলি নিয়ে সমস্যায় পড়েছিলাম তবে আমি ভুল হতে পারি। ধন্যবাদ

4
@ ব্রুকিয়াসেস - সার্ভারটি যেভাবে ইনপুট অ্যারে পরিচালনা করে তা এক ওয়েব সার্ভার থেকে অন্যটিতে পরিবর্তিত হতে পারে (এটির মতো সূক্ষ্ম বিবরণের ক্ষেত্রে বিভিন্ন ওএসগুলি বিভিন্নভাবে প্রয়োগ করে), তবে আমি যে কৌশলগুলিতে এই কৌশলগুলি নিযুক্ত করেছি তার মধ্যে প্রতিটি ধারাবাহিকতা সামঞ্জস্যপূর্ণ নিজেই (অর্থাত অর্ডার ক্রম একই হয়)। এটি সম্ভবত সম্ভব যে কোনও ব্রাউজার সার্ভারে অনুরোধটি পাস করার আগে অনুরোধ ভেরিয়েবলের ক্রমটি মিশ্রিত করতে পারে, তবে আমি এটি মোটামুটি অস্বাভাবিক বলে আশা করব। আপনি যে চূড়ান্ত ইস্যুটির মুখোমুখি হতে পারেন তা হ'ল এইচটিএমএলটি একটি অদ্ভুত ক্রমে এবং সিএসএস সামঞ্জস্যের সাথে মিশ্রিত হচ্ছে
জেফ্রি ব্লেক

... অবস্থান। আপনার পৃষ্ঠাটি যদি এটির মতো হয় তবে এটি অবশ্যই কিছু অদ্ভুত সমস্যাগুলি ডাব্লু / আর / টি এর অ্যারের ক্রমগুলি দেখতে পাবে।
জেফ্রি ব্লেক

52

যেমন ক্ষেত্র নামকরণ করে

<input type="text" name="item[0][name]" />
<input type="text" name="item[0][email]" />

<input type="text" name="item[1][name]" />
<input type="text" name="item[1][email]" />

<input type="text" name="item[2][name]" />
<input type="text" name="item[2][email]" />

(জাভাস্ক্রিপ্টের মাধ্যমে উপাদান যুক্ত করার সময় এটিও সম্ভব)

সম্পর্কিত পিএইচপি স্ক্রিপ্টটি দেখতে পারে

function show_Names($e)
{
  return "The name is $e[name] and email is $e[email], thank you";
}

$c = array_map("show_Names", $_POST['item']);
print_r($c);

4

আমি এটি এখন একটু দেরিতে জানি, তবে আপনি এর মতো কিছু করতে পারেন:

function AddToArray ($post_information) {
    //Create the return array
    $return = array();
    //Iterate through the array passed
    foreach ($post_information as $key => $value) {
        //Append the key and value to the array, e.g.
            //$_POST['keys'] = "values" would be in the array as "keys"=>"values"
        $return[$key] = $value;
    }
    //Return the created array
    return $return;
}

সাথে পরীক্ষা:

if (isset($_POST['submit'])) {
    var_dump(AddToArray($_POST));
}

এটি আমার জন্য উত্পাদিত:

array (size=1)
  0 => 
    array (size=5)
      'stake' => string '0' (length=1)
      'odds' => string '' (length=0)
      'ew' => string 'false' (length=5)
      'ew_deduction' => string '' (length=0)
      'submit' => string 'Open' (length=4)

2

যদি আপনি ফিল্ডসেটের অ্যারে পেয়েছেন?

<fieldset>
<input type="text" name="item[1]" />
<input type="text" name="item[2]" />
<input type="hidden" name="fset[]"/>
</fieldset>

<fieldset>
<input type="text" name="item[3]" />
<input type="text" name="item[4]" />
<input type="hidden" name="fset[]"/>
</fieldset>

ফিল্ডসেটের সংখ্যা গণনা করার জন্য আমি একটি লুকানো ক্ষেত্র যুক্ত করেছি। ব্যবহারকারী ক্ষেত্রগুলি যুক্ত করতে বা মুছতে এবং তারপরে এটি সংরক্ষণ করতে পারে।


2

আমি পাশাপাশি এই সমস্যা জুড়ে এসেছি। 3 ইনপুট দেওয়া হয়েছে: ক্ষেত্র [], ফিল্ড 2 [], ফিল্ড 3 []

আপনি এই ক্ষেত্রগুলির প্রতিটিকে গতিশীলভাবে অ্যাক্সেস করতে পারেন। যেহেতু প্রতিটি ক্ষেত্র একটি অ্যারে হবে, সম্পর্কিত ক্ষেত্রগুলি সমস্ত একই অ্যারে কী ভাগ করে নেবে। উদাহরণস্বরূপ, প্রদত্ত ইনপুট ডেটা:

  • বব, bob@bob.com, পুরুষ
  • চিহ্নিত করুন, চিহ্নিত করুন

বব এবং তার ইমেল এবং লিঙ্গ একই কী ভাগ করবে। এটি মনে রেখে আপনি লুপের জন্য এই জাতীয় ডেটা অ্যাক্সেস করতে পারবেন:

    for($x = 0; $x < count($first_name); $x++ )
    {
        echo $first_name[$x];
        echo $email[$x];
        echo $sex[$x];
        echo "<br/>";
    }

এই আইশের পাশাপাশি। আপনার যখনই নতুন ক্ষেত্র যুক্ত করার দরকার হয় তখন আপনাকে যা করতে হবে তা হ'ল আপনার নিজ নিজ অ্যারে ওয়ারগুলি যুক্ত করুন।


0

তবে ইমেল এবং ব্যবহারকারীর ব্যবহারের মধ্যে মিস দম্পতি এড়াতে ভলকারকের সমাধান সবচেয়ে ভাল। সুতরাং আপনাকে পিএইচপি সহ এইচটিএমএল কোড তৈরি করতে হবে:

<? foreach ($i = 0; $i < $total_data; $i++) : ?>
    <input type="text" name="name[<?= $i ?>]" />
    <input type="text" name="email[<?= $i ?>]" />
<? endforeach; ?>

আপনার প্রয়োজন অনুসারে $ মোট_ডেটা পরিবর্তন করুন। এটি দেখানোর জন্য, ঠিক এটির মতো:

$output = array_map(create_function('$name, $email', 'return "The name is $name and email is $email, thank you.";'), $_POST['name'], $_POST['email']);
echo implode('<br>', $output);

ধরে নিই পোস্টটি মেইল ​​পদ্ধতি ব্যবহার করে পাঠানো হয়েছিল।


0

তবুও, আপনি নীচের কোডগুলি হিসাবে ব্যবহার করতে পারেন,

$a = array('name1','name2','name3');
$b = array('email1','email2','email3');

function f($a,$b){
    return "The name is $a and email is $b, thank you";
}

$c = array_map('f', $a, $b);

//echoing the result

foreach ($c as $val) {
    echo $val.'<br>';
}


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.