سؤال

foreach ($_GET as $field => $label)
{
   $datarray[]=$_GET[$field];
   echo "$_GET[$field]";
   echo "<br>";
}
print_r($datarray);

هذا هو الناتج الذي أحصل عليه.أرى البيانات موجودة في Datarray ولكن عندما أكون echo $_GET[$field]

أحصل فقط على "Array"

لكن print_r($datarray) يطبع كافة البيانات.هل لديك أي فكرة عن كيفية سحب تلك القيم؟

انتاج

Array ( 
        [0] => Array ( 
                 [0] => Grade1 
                 [1] => ln 
                 [2] => North America 
                 [3] => yuiyyu 
                 [4] => iuy 
                 [5] => uiyui 
                 [6] => yui 
                 [7] => uiy 
                 [8] => 0:0:5 
                 ) 
)
هل كانت مفيدة؟

المحلول

يحرر:عندما أكملت الاختبار، كان هنا عنوان URL النهائي:

http://hofstrateach.org/Roberto/process.php?keys=Grade1&keys=Nathan&keys=North%20America&keys=5&keys=3&keys=no&keys=foo&keys=blat&keys=0%3A0%3A24

من المحتمل أن يكون هذا عنوان URL مشوهًا.عندما تقوم بتمرير مفاتيح مكررة في استعلام، فإن PHP يجعلها مصفوفة.من المحتمل أن يكون عنوان URL أعلاه شيئًا مثل:

http://hofstrateach.org/Roberto/process.php?grade=Grade1&schoolname=Nathan&region=North%20America&answer[]=5&answer[]=3&answer[]=no&answer[]=foo&answer[]=blat&time=0%3A0%3A24

سيؤدي هذا إلى إنشاء إدخالات فردية لمعظم الحقول، وجعل $_GET['answer'] عبارة عن مصفوفة من الإجابات المقدمة من قبل المستخدم.

الحد الأدنى:إصلاح ملف الفلاش الخاص بك.

نصائح أخرى

يستخدم var_export($_GET) لمعرفة نوع المصفوفة التي تحصل عليها بسهولة أكبر.

من مخرجات البرنامج النصي الخاص بك أستطيع أن أرى أن لديك عدة صفائف متداخلة.يبدو أن شيئًا مثل:

$_GET = array( array( array("Grade1", "ln", "North America", "yuiyyu", "iuy", "uiyui", "yui","uiy","0:0:5")))

لذلك للحصول على هذه المتغيرات تحتاج إلى شيء مثل:

echo $_GET[0][0][0]; // => "Grade1"

سيؤدي استدعاء الصدى على المصفوفة دائمًا إلى إخراج "Array".print_r (من دليل PHP) يطبع معلومات يمكن قراءتها بواسطة الإنسان حول المتغير.

يستخدم <pre> العلامات من قبل print_r, ، فستكون لديك شجرة مطبوعة (أو مجرد إلقاء نظرة على المصدر.من هذه النقطة سيكون لديك فهم واضح لكيفية عمل المصفوفة الخاصة بك وستكون قادرًا على سحب القيمة التي تريدها.

أقترح مواصلة القراءة $_GET متغير و صفائف, ، من أجل فهم أفضل لقيمها

جرب هذا:

foreach ($_GET as $field => $label)
{
    $datarray[]=$_GET[$field];

    echo $_GET[$field]; // you don't really need quotes

    echo "With quotes: {$_GET[$field]}"; // but if you want to use them

    echo $field; // this is really the same thing as echo $_GET[$field], so

    if($label == $_GET[$field]) {
         echo "Should always be true<br>";
    }
    echo "<br>";
}
print_r($datarray);

إنها تطبع "مصفوفة" فقط لأنه عندما تقول ذلك

 echo "$_GET[$field]";

لا يمكن لـ PHP معرفة ما تقصده $_GET عنصر $field, ، فإنه يرى أنك تريد طباعة المتغير $_GET.لذلك، يحاول طباعته، وبالطبع فهو عبارة عن مصفوفة، وهذا ما تحصل عليه.بشكل عام، عندما تريد تكرار عنصر مصفوفة، يمكنك القيام بذلك على النحو التالي:

echo "The foo element of get is: {$_GET['foo']}";

تخبر الأقواس المتعرجة PHP أن الأمر برمته عبارة عن متغير يحتاج إلى تفسير؛وإلا فإنه سوف يفترض أن اسم المتغير هو $_GET بنفسها.

في حالتك، على الرغم من أنك لا تحتاج إلى ذلك، ما تحتاجه هو:

foreach ($_GET as $field => $label)
{
    $datarray[] = $label;
}

وإذا كنت تريد طباعته، فقط افعل

echo $label; // or $_GET[$field], but that's kind of pointless.

المشكلة لم تكن في ملف الفلاش لديك، قم بإرجاعه إلى ما كان عليه؛أنت تعلم أنه كان صحيحًا لأن المتغير $dataarray الخاص بك يحتوي على جميع البيانات.لماذا تريد استخراج البيانات من $_GET إلى مجموعة أخرى على أي حال؟

ربما تكون متغيرات GET عبارة عن صفائف بحد ذاتها؟أي. http://site.com?var[]=1&var[]=2

يبدو أن وسيطة GET هي في حد ذاتها مصفوفة.سيكون من المفيد الحصول على المدخلات وكذلك المخرجات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top