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>
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. . .
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>
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>
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>
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>
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>