รบกวนเขียนโค้ต php สุ่มตัวเลขจาก 1-10 แล้วนำค่าที่ได้ไปเก็บไว้ในอาเรย์

เริ่มโดย babynol, 21 มกราคม 2011, 12:03:17

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

babynol

รบกวนเขียนโค้ต php สุ่มตัวเลขจาก 1-10 แล้วนำค่าที่ได้ไปเก็บไว้ในอาเรย์ โดยค่าที่ได้ต้องไม่ซ้ำกันนะครับ

ขอบคุณมากครับ


babynol

อ้างถึงจาก: Nomkhonwaan ใน 21 มกราคม 2011, 12:13:01
$number = range(1, 10);
shuffle($number);

:-[


ขอแบบเต็มๆได้ไหมครับ แบบรันได้เลยอ่ะครับ ไม่มีความรุ้เลย

ขอบคุณครับ

Nomkhonwaan

อ้างถึงจาก: babynol ใน 21 มกราคม 2011, 12:21:37
อ้างถึงจาก: Nomkhonwaan ใน 21 มกราคม 2011, 12:13:01
$number = range(1, 10);
shuffle($number);

:-[


ขอแบบเต็มๆได้ไหมครับ แบบรันได้เลยอ่ะครับ ไม่มีความรุ้เลย

ขอบคุณครับ

เซฟเป็นไฟล์ .php แล้วเรียกใช้ผ่าน http://localhost/ชื่อไฟล์.php

<?php
  $number 
range(110); // สร้างตัวแปร array ขนาด 10 เก็บค่า 1 - 10 เรียงกัน
  
shuffle($number); // สั่งให้ array สลับค่าภายใน 
  
  
print_r($number// พิมพ์ค่าของตัวแปร $number ออกมา
?>


:-[

babynol

อาจารย์บอกว่าห้ามใช้ shuffle อ่ะครับ

เขาให้สร้างฟังก์ชั่นขึ้นมาอ่ะครับ


xmen256k


mean

ทำให้มึนไปข้าง
<?

function rand(&$arr){
$i = rand(0,10);
$arr[$i] = $i;
}

$arr = array();
rand($arr);

echo '<pre>';
print_r($arr);
?>

อยากได้แบบไหนต้องเอา output มาดูครับ


[direct=https://www.ireallyhost.com/]บริการโดเมน, เว็บโฮสติ้ง, SSL Certificate[/direct]
[direct=https://www.ireallyhost.com/ssl]บริการ SSL Certificate , HTTPS สำหรับเว็บไซต์[/direct]
[direct=https://www.ireallyhost.com/]บริการ Web Hosting Free! Domain name ตลอดอายุบริการ [/direct]
[direct=https://www.ireallyhost.com/domain]บริการ จดโดเมน, Free DNS Service, Domain Forwarding, จัดการโดเมนได้เอง Domain Control Panel[/direct

untilate

ไม่ให้ซ้ำกันเลยเหรอ จะสลับให้เสียเวลาทำไมหว่า
ผมอยู่ ม.5 ยังใช้เป็นแต่ function ง่ายๆ

<?php
   $num = range(1,10);
   $all = count($num);
   for ($i=0;$i<$all;$i++){
         $j = @mt_rand(0, $i);
         $temp = $num[$i];
         $num[$i] = $num[$j];
         $num[$j] = $temp;
   }
   print_r($num);
?>

เอาไปทำเป็น function เอาเองนะ


babynol

อ้างถึงจาก: mean ใน 23 มกราคม 2011, 15:36:38
ทำให้มึนไปข้าง
<?

function rand(&$arr){
$i = rand(0,10);
$arr[$i] = $i;
}

$arr = array();
rand($arr);

echo '<pre>';
print_r($arr);
?>

อยากได้แบบไหนต้องเอา output มาดูครับ


อยากได้แบบรันออกมาแล้ว ได้  3 5 6 9 8 7 4 1 2  พอรันครั้งต่อไปก้อได้เลขชุดอื่น คือเรียงไม่เหมือนเดิมอ่ะครับ

nst_nk

อ้างถึงจาก: babynol ใน 23 มกราคม 2011, 16:16:35
อ้างถึงจาก: mean ใน 23 มกราคม 2011, 15:36:38
ทำให้มึนไปข้าง
<?

function rand(&$arr){
$i = rand(0,10);
$arr[$i] = $i;
}

$arr = array();
rand($arr);

echo '<pre>';
print_r($arr);
?>

อยากได้แบบไหนต้องเอา output มาดูครับ

อยากได้แบบรันออกมาแล้ว ได้  3 5 6 9 8 7 4 1 2  พอรันครั้งต่อไปก้อได้เลขชุดอื่น คือเรียงไม่เหมือนเดิมอ่ะครับ


เอาไปใช้ทำอะไรครับ มีการเก็บลง DB หรือเปล่า
ถ้าเอาเก็บลง DB
ก็ สามารถเอาไปเทียบกับค่าใน DB ก่อนเก็บได้ครับ   ว่าถ้าซ้ำให้วนกลับมาสุ่มใหม่ แล้วค่อยบันทึก

  ◤◤ รับเขียนระบบต่างๆครับ เช่น ระบบ Shipping , ร้านค้าออนไลน์ , อสังหาริมทรัพย์ , ระบบจัดการหลังบ้านทุกประเภท  สอบถามได้ครับ Line : bigznst ◥◥

Positron

<?php
$a=range(1,10);
$b=array_rand($a,count($a));
$d=array();
foreach($b as $c)array_push($d,$a[$c]);
print_r($d);
?>

random แบบไม่ซ้ำ ผลเหมือนกับการใช้ shuffle

ไม่รู้ว่าใช่อย่างที่ต้องการรึป่าวนะครับ  :P

untilate

แล้วของผมใช่แบบที่ต้องการป่าวครับ
อ้างถึงจาก: untilate ใน 23 มกราคม 2011, 15:47:55
ไม่ให้ซ้ำกันเลยเหรอ จะสลับให้เสียเวลาทำไมหว่า
ผมอยู่ ม.5 ยังใช้เป็นแต่ function ง่ายๆ

<?php
   $num = range(1,10);
   $all = count($num);
   for ($i=0;$i<$all;$i++){
         $j = @mt_rand(0, $i);
         $temp = $num[$i];
         $num[$i] = $num[$j];
         $num[$j] = $temp;
   }
   print_r($num);
?>

เอาไปทำเป็น function เอาเองนะ




mean

เอาแบบ มึนๆ อีกที
<?

function _rand(&$arr){

while(1){
   $rand = rand(0,10);
   #if(!in_array($rand,$arr)) $arr[$rand] = $rand;
   #แบบ บนช้ากว่า
   #if(!$arr[$rand]) $arr[$rand] = $rand;
   #แบบ บนช้ากว่า
    if(!isset($arr[$rand])) $arr[$rand] = $rand; 

   if(count($arr)>=10) break;
}

}

$arr = array();
_rand($arr);

echo '<pre>';
print_r($arr);
?>


และด้านบนคือตัวอย่างที่ไม่ดีครับ เขียนมาให้ดูอีกแบบ
เนื่องจาก ใช้ while ฟุ่มเฟือย ไม่รู้ต้อง loop กี่รอบ ถึงจะได้ครบ
แต่ผล จะได้ดังที่ต้องการ
คือ สุ่ม 1-10 ไม่ซ้ำกัน ไม่ซ้ำรูปแบบเลย
จริงๆ เขียนโปรแกรมได้หลายแบบ ครับ แล้วแต่เราจะนึกได้
แต่เขียนอย่างไรเขียนให้ดี เร็ว code น้อยเข้าใจง่ายมากกว่า

ข้อสังเกตุผมไม่ได้ใช้ return
แต่ใช้ &  ตอนประกาศตัวแปลแทนครับ


[direct=https://www.ireallyhost.com/]บริการโดเมน, เว็บโฮสติ้ง, SSL Certificate[/direct]
[direct=https://www.ireallyhost.com/ssl]บริการ SSL Certificate , HTTPS สำหรับเว็บไซต์[/direct]
[direct=https://www.ireallyhost.com/]บริการ Web Hosting Free! Domain name ตลอดอายุบริการ [/direct]
[direct=https://www.ireallyhost.com/domain]บริการ จดโดเมน, Free DNS Service, Domain Forwarding, จัดการโดเมนได้เอง Domain Control Panel[/direct

babynol

อ้างถึงจาก: mean ใน 23 มกราคม 2011, 16:22:47
เอาแบบ มึนๆ อีกที
<?

function rand(&$arr){

while(1){
   $rand = rand(0,10);
   #if(!in_array($rand,$arr)) $arr[$rand] = $rand;
   #แบบ บนช้ากว่า
   if(!$arr[$rand]) $arr[$rand] = $rand;

   if(count($arr)>=10) break;
}

}

$arr = array();
rand($arr);

echo '<pre>';
print_r($arr);
?>


และด้านบนคือตัวอย่างที่ไม่ดีครับ เขียนมาให้ดูอีกแบบ
เนื่องจาก ใช้ while ฟุ่มเฟือย ไม่รู้ต้อง loop กี่รอบ ถึงจะได้ครบ
แต่ผล จะได้ดังที่ต้องการ
คือ สุ่ม 1-10 ไม่ซ้ำกัน ไม่ซ้ำรูปแบบเลย
จริงๆ เขียนโปรแกรมได้หลายแบบ ครับ แล้วแต่เราจะนึกได้
แต่เขียนอย่างไรเขียนให้ดี เร็ว code น้อยเข้าใจง่ายมากกว่า


อันนี้ก๊อบ รันได้เลยป่าวครับ

mean



[direct=https://www.ireallyhost.com/]บริการโดเมน, เว็บโฮสติ้ง, SSL Certificate[/direct]
[direct=https://www.ireallyhost.com/ssl]บริการ SSL Certificate , HTTPS สำหรับเว็บไซต์[/direct]
[direct=https://www.ireallyhost.com/]บริการ Web Hosting Free! Domain name ตลอดอายุบริการ [/direct]
[direct=https://www.ireallyhost.com/domain]บริการ จดโดเมน, Free DNS Service, Domain Forwarding, จัดการโดเมนได้เอง Domain Control Panel[/direct

rawat2543

การบ้าน

การ board


เหมือนลอกการบ้านแฮะ

untilate

คุณเจ้าของกระทู้ครับของผมใช้ได้หรือไม่ผมอยากรู้ครับ คือมันสุ่มได้อะแน่นอนเพราะผมลองแล้ว แต่ไม่รู้ว่า output ตรงตามความต้องการหรือป่าว


<?php
   $num = range(1,10);
   $all = count($num);
   for ($i=0;$i<$all;$i++){
         $j = @mt_rand(0, $i);
         $temp = $num[$i];
         $num[$i] = $num[$j];
         $num[$j] = $temp;
   }
   print_r($num);
?>

mean

untilate<< ผมเทสใช้ได้นะครับ

นึกขึ้นได้เปลี่ยนชื่อ function ด้วยนะครับ
เนื่องจาก เป็น static function แล้วเราใช้ rand เพื่อสุ่มด้วย จึงใช้ชื่อซ้ำไม่ได้

ฟังก์ชั่นที่ให้เป็นตัวอย่างจะต่างกัน ของคุณ untilate ตรงมันสุ่ม key ด้วย


[direct=https://www.ireallyhost.com/]บริการโดเมน, เว็บโฮสติ้ง, SSL Certificate[/direct]
[direct=https://www.ireallyhost.com/ssl]บริการ SSL Certificate , HTTPS สำหรับเว็บไซต์[/direct]
[direct=https://www.ireallyhost.com/]บริการ Web Hosting Free! Domain name ตลอดอายุบริการ [/direct]
[direct=https://www.ireallyhost.com/domain]บริการ จดโดเมน, Free DNS Service, Domain Forwarding, จัดการโดเมนได้เอง Domain Control Panel[/direct