Warum ist das Array leer, nachdem dieser Code ausgeführt wurde?

WBOY
Freigeben: 2016-08-20 09:04:15
Original
1028 Leute haben es durchsucht

Holen Sie sich zuerst den Code

<code>$suffix = 0; //用户ID尾数
$ids = [];
$stores = [1,10,23,45,67,56,45,324,23]; //储存用户ID的数组
$limit = 5;
$count = count($stores);
$i=0;
do{
    $id = $stores[array_rand($stores ,1)];
    $sub = substr($id ,-1);
    if($sub==$suffix){
        $ids[$id] = $id;
    }
    $i++;
}while(count($ids)<$limit && $i<$count);
print_r($ids);
exit;</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ich möchte Benutzer-IDs mit der Endung 0 von $stores erhalten, mit einem Maximum von 5 und einem Minimum von 1, und die Ergebnisse werden in einem Array gespeichert
, aber wenn ich ihn ausführe , es wird manchmal $ids leer sein. . . Verstehe es nicht. . .

Antwortinhalt:

Holen Sie sich zuerst den Code

<code>$suffix = 0; //用户ID尾数
$ids = [];
$stores = [1,10,23,45,67,56,45,324,23]; //储存用户ID的数组
$limit = 5;
$count = count($stores);
$i=0;
do{
    $id = $stores[array_rand($stores ,1)];
    $sub = substr($id ,-1);
    if($sub==$suffix){
        $ids[$id] = $id;
    }
    $i++;
}while(count($ids)<$limit && $i<$count);
print_r($ids);
exit;</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ich möchte Benutzer-IDs mit der Endung 0 von $stores erhalten, mit einem Maximum von 5 und einem Minimum von 1, und die Ergebnisse werden in einem Array gespeichert
, aber wenn ich ihn ausführe , es wird manchmal $ids leer sein. . . Verstehe es nicht. . .

Warum müssen Sie while verwenden und die Daten in der Schleife wählen immer noch zufällig ein Element des Arrays aus? Können Sie foreach nicht verwenden?

Wenn das Ergebnis nicht leer ist, versuchen Sie Folgendes

<code>        $suffix = 0; //用户ID尾数
        $ids = [];
        $stores = [1,10,23,45,67,56,45,324,23]; //储存用户ID的数组
        $limit = 5;
        $count = count($stores);
        $i=0;
        do{
            $id = $stores[array_rand($stores ,1)];
            $sub = substr($id ,-1);
            if($sub==$suffix){
                $ids[$id] = $id;
            }
            $i++;
            $iCount = count($ids);
        }while($iCount == 0 || ($count<$limit && $i<$count ));
        print_r($ids);
        exit;</code>
Nach dem Login kopieren

Egal wie oft Sie array_rand($stores,1) ausführen, es kann Array-Elemente geben, die nie abgerufen werden können.
Wenn die Mantisse von $stores 0 ist, gibt es nur 10;
$count = count($stores); bedeutet do_while höchstens 10 Mal.

Wenn die Zahl 10 10 Mal nicht erreicht wird, erhalten Sie am Ende nur ein leeres Array.

<code><?php

$suffix = 0; //用户ID尾数
$ids = [];
$stores = [1,10,23,45,67,56,45,324,23]; //储存用户ID的数组
$limit = 5;
$count = count($stores);
$i = 0;
do {
    $id = $stores[array_rand($stores, 1)];
    $sub = substr($id, -1);
    echo 'test:'.$id."\n";
    if ($sub == $suffix) {
        $ids[$id] = $id;
        echo 'got:'.$id."\n";
    }
    ++$i;
    echo 'count($ids):'.count($ids)."\n";
    echo '$i:'.$i."\n";

} while (count($ids) < $limit && $i < $count);
print_r($ids);</code>
Nach dem Login kopieren

Das Ergebnis ist leer:

<code>[root@localhost www]# php test.php
test:1
count($ids):0
$i:1
test:23
count($ids):0
$i:2
test:23
count($ids):0
$i:3
test:56
count($ids):0
$i:4
test:45
count($ids):0
$i:5
test:67
count($ids):0
$i:6
test:324
count($ids):0
$i:7
test:67
count($ids):0
$i:8
test:67
count($ids):0
$i:9
Array
(
)</code>
Nach dem Login kopieren

Das Ergebnis ist nicht leer:

<code>[root@localhost www]# php test.php
test:324
count($ids):0
$i:1
test:10
got:10
count($ids):1
$i:2
test:23
count($ids):1
$i:3
test:10
got:10
count($ids):1
$i:4
test:67
count($ids):1
$i:5
test:324
count($ids):1
$i:6
test:45
count($ids):1
$i:7
test:45
count($ids):1
$i:8
test:1
count($ids):1
$i:9
Array
(
    [10] => 10
)</code>
Nach dem Login kopieren
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage