سؤال

لدي التعليمات البرمجية المتكررة.

$items['A'] = "Test";
$items['B'] = "Test";
$items['C'] = "Test";
$items['D'] = "Test";

$index = 0;
foreach($items as $key => $value)
{
    echo "$index is a $key containing $value\n";
    $index++;
}

المخرجات المتوقعة:

0 is a A containing Test
1 is a B containing Test
2 is a C containing Test
3 is a D containing Test

هل هناك طريقة ترك $index متغير ؟

هل كانت مفيدة؟

المحلول

دولار مؤشر متغير هناك نوع من التضليل.هذا العدد ليس المؤشر الخاص بك "أ", "ب", "ج", "د" مفاتيح.لا يزال بإمكانك الوصول إلى البيانات من خلال ترقيم مؤشر مؤشر $[1], ولكن هذا ليس النقطة.إذا كنت حقا تريد أن تبقي مرقمة مؤشر كدت هيكلة البيانات:

$items[] = array("A", "Test");
$items[] = array("B", "Test");
$items[] = array("C", "Test");
$items[] = array("D", "Test");

foreach($items as $key => $value) {
    echo $key.' is a '.$value[0].' containing '.$value[1];
}

نصائح أخرى

يمكنك القيام بذلك:

$items[A] = "Test";
$items[B] = "Test";
$items[C] = "Test";
$items[D] = "Test";

for($i=0;$i<count($items);$i++)
{
    list($key,$value) = each($items[$i]);
    echo "$i $key contains $value";
}

أنا لم أفعل هذا من قبل ولكن من الناحية النظرية يجب أن تعمل.

كن حذرا كيف يمكنك أنت تحديد المفاتيح الخاصة بك هناك.في حين أن المثال الخاص بك يعمل, قد لا دائما:

$myArr = array();
$myArr[A] = "a";  // "A" is assumed.
echo $myArr['A']; // "a" - this is expected.

define ('A', 'aye');

$myArr2 = array();
$myArr2[A] = "a"; // A is a constant

echo $myArr['A']; // error, no key.
print_r($myArr);

// Array
// (
//     [aye] => a
// )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top