مشكلة PHP $_GET
سؤال
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 النهائي:
من المحتمل أن يكون هذا عنوان URL مشوهًا.عندما تقوم بتمرير مفاتيح مكررة في استعلام، فإن PHP يجعلها مصفوفة.من المحتمل أن يكون عنوان URL أعلاه شيئًا مثل:
سيؤدي هذا إلى إنشاء إدخالات فردية لمعظم الحقول، وجعل $_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) يطبع معلومات يمكن قراءتها بواسطة الإنسان حول المتغير.
جرب هذا:
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 هي في حد ذاتها مصفوفة.سيكون من المفيد الحصول على المدخلات وكذلك المخرجات.