Değişken değişkenleri kullanırken başlatılmamış dize haber ofset

2 Cevap php

Çalıştırma kodu aşağıdaki herşey = 5 $ i. Kadar çalışıyor ne zaman sonra diziler doğru doldurulur almak gibi görünüyor olsa da, Başlatılmamış dize ofset bildirimler alabilirsiniz. Ben uzak bir sunucu üzerinde kontrol ederken yerel değil çalıştırırken ben bu haber olsun. Hem v5.2.11 yayınlanıyor. Ben çıkış uzaktan hata raporlama biçimlendirimleri dayalı yerel farklı olduğunu varsayalım, ama ne fark neden?

Kod:

$i = 0;
$row = 0;
$col = 0;
$quad = 0;
while(count($ripDigits) > 0)
{
    $ranNum = rand(0, count($ripDigits) - 1);
    $ripDigit_splice = array_splice($ripDigits, $ranNum, 1);
    $ranDigit = $ripDigit_splice[0];
    echo ("\$i = " . $i . " | count(\$ripDigits) = " . count($ripDigits) . "<br />\n");

    $thisRow = "row_" . $row;
    $$thisRow[$i] = $ranDigit;

    echo ("\t\t<td><b>" . $$thisRow[$i] . "</b></td>\n");

    $thisUsedColumn = "usedDigits_column_" . $i;
    $$thisUsedColumn[$col] = $$thisRow[$i];

    $thisUsedColumn = "usedDigits_quad_" . $i;
    $$thisUsedColumn[$quad] = $$thisRow[$i];

    $i++;
}

Çıktı:

$i = 0 | count($ripDigits) = 8
$i = 1 | count($ripDigits) = 7
$i = 2 | count($ripDigits) = 6
$i = 3 | count($ripDigits) = 5
$i = 4 | count($ripDigits) = 4
$i = 5 | count($ripDigits) = 3

Notice: Uninitialized string offset: 5 in script.php on line 97

Notice: Uninitialized string offset: 5 in script.php on line 99

Notice: Uninitialized string offset: 5 in script.php on line 102

Notice: Uninitialized string offset: 5 in script.php on line 105
$i = 6 | count($ripDigits) = 2

Notice: Uninitialized string offset: 6 in script.php on line 97

Notice: Uninitialized string offset: 6 in script.php on line 99

Notice: Uninitialized string offset: 6 in script.php on line 102

Notice: Uninitialized string offset: 6 in script.php on line 105
$i = 7 | count($ripDigits) = 1

Notice: Uninitialized string offset: 7 in script.php on line 97

Notice: Uninitialized string offset: 7 in script.php on line 99

Notice: Uninitialized string offset: 7 in script.php on line 102

Notice: Uninitialized string offset: 7 in script.php on line 105
$i = 8 | count($ripDigits) = 0

Notice: Uninitialized string offset: 8 in script.php on line 97

Notice: Uninitialized string offset: 8 in script.php on line 99

Notice: Uninitialized string offset: 8 in script.php on line 102

Notice: Uninitialized string offset: 8 in script.php on line 105

1   8   4   2   7   5   9   3   6

Şimdiden teşekkürler!

2 Cevap

Tamam, ben bu amacı nedir gerçekten emin değilim, bu yüzden söylemek zor ... ama ben bu değişken değişkenler ile parantez kullanılarak çözülecektir sanıyorum. Bu değişken adı olarak $ thisRow [$ i] kullanmaya çalışıyor, ama bu yok.

$i = 0;
$row = 0;
$col = 0;
$quad = 0;
while(count($ripDigits) > 0) {
    $ranNum = rand(0, count($ripDigits) - 1);
    $ripDigit_splice = array_splice($ripDigits, $ranNum, 1);
    $ranDigit = $ripDigit_splice[0];
    echo ("\$i = " . $i . " | count(\$ripDigits) = " . count($ripDigits) . "<br />\n");

    $thisRow = "row_" . $row;
    ${$thisRow}[$i] = $ranDigit;

    echo ("\t\t<td><b>" . ${$thisRow}[$i] . "</b></td>\n");

    $thisUsedColumn = "usedDigits_column_" . $i;
    ${$thisUsedColumn}[$col] = ${$thisRow}[$i];

    $thisUsedColumn = "usedDigits_quad_" . $i;
    ${$thisUsedColumn}[$quad] = ${$thisRow}[$i];

    $i++;
}

Bu ripDigits 6 sayı bir dizi başlatılıyor ile çalıştı.

Ayrıca, sunucu üzerinde 'eser' olarak neden - muhtemel hata raporlama (E_NOTICE) hemen kapatılır.

Ben sunucu ve yerel makine php versiyonları farklı sanırım. Bugün ben de bu mesajları almak ve size bu mesajı almak xammp v.1.7.4 kullanırsanız ben ekmek, ancak 1.7.3 kullanmak eğer yok.