為什麼這段代碼執行完成後,會有數組為空白的情況?

來源:互聯網
上載者:User
先上代碼

$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;

我想從$stores中擷取尾數為0的使用者ID,最多取5個,最少取1個,結果存到數組中,就有了上面的代碼
,但是我執行它,竟然會有$ids為空白的時候。。。搞不懂。。。

回複內容:

先上代碼

$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;

我想從$stores中擷取尾數為0的使用者ID,最多取5個,最少取1個,結果存到數組中,就有了上面的代碼
,但是我執行它,竟然會有$ids為空白的時候。。。搞不懂。。。

為什麼要用while而且迴圈到的資料還是隨機取數組的某個元素,不能使用foreach嗎?

結果不為空白的話試試這個

        $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;

不論運行多少次,array_rand($stores ,1) ,都有可能有數組元素永遠取不到。
$stores尾數是0的就只有10;
$count = count($stores);意味著最多do_while 10次。

10次都沒輪上那個10的話,最後就只能得到空數組了。

結果為空白:

[root@localhost www]# php test.phptest:1count($ids):0$i:1test:23count($ids):0$i:2test:23count($ids):0$i:3test:56count($ids):0$i:4test:45count($ids):0$i:5test:67count($ids):0$i:6test:324count($ids):0$i:7test:67count($ids):0$i:8test:67count($ids):0$i:9Array()

結果不為空白:

[root@localhost www]# php test.phptest:324count($ids):0$i:1test:10got:10count($ids):1$i:2test:23count($ids):1$i:3test:10got:10count($ids):1$i:4test:67count($ids):1$i:5test:324count($ids):1$i:6test:45count($ids):1$i:7test:45count($ids):1$i:8test:1count($ids):1$i:9Array( [10] => 10)
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.