สอบถามครับ php ว่าเราจะตรวจสอบตัวเลขที่เท่ากันยังไง โดยไม่สนใจที่ตำแหน่ง

เริ่มโดย gooble, 29 กรกฎาคม 2014, 07:41:18

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

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

gooble

ยกตัวอย่างนะครับ เช่น  01 - 10  และ  13 - 31 

เราจะมีวิธีเช็คยังไงว่า  01 เท่ากับ 10   หรือ  13  เท่ากับ 31

คือเราจะเช้คแค่ว่า เลข 2 ตำแหน่งมีค่าเท่ากันหรือเปล่า โดยไม่สนใจตำแหน่งที่อยู่

อีกข้อครับ จากด้านบน  ถ้าเอาตัวเลขไปใส่ใน array  เช่น  array("01", "10", "11", "31","13","11",);

อยากได้ผลลัพท์เป็น  01, 11, 13  โดยตัดค่าที่มันซ้ำออกอะครับ  ใครพอจะแนะนำได้บ้างครับ

manussawin


esanza.com

อ้างถึงจาก: gooble ใน 29 กรกฎาคม 2014, 07:41:18
ยกตัวอย่างนะครับ เช่น  01 - 10  และ  13 - 31 

เราจะมีวิธีเช็คยังไงว่า  01 เท่ากับ 10   หรือ  13  เท่ากับ 31

คือเราจะเช้คแค่ว่า เลข 2 ตำแหน่งมีค่าเท่ากันหรือเปล่า โดยไม่สนใจตำแหน่งที่อยู่

อีกข้อครับ จากด้านบน  ถ้าเอาตัวเลขไปใส่ใน array  เช่น  array("01", "10", "11", "31","13","11",);

อยากได้ผลลัพท์เป็น  01, 11, 13  โดยตัดค่าที่มันซ้ำออกอะครับ  ใครพอจะแนะนำได้บ้างครับ

อธิบายได้ละเอียดดีครับ แต่ความเป็นไปได้ค่อนข้างยากครับ
รอเทพมาตอบ ช่วยดันครับ  :wanwan016:
ใครต้องการเช่าโฮสที่มี Control Panel ดีๆ
และ Support ดี แนะนำ => [direct=https://support.hostatom.com/aff.php?aff=456]โฮสอะตอม[/direct]

zero1150kfc

อ้างถึงจาก: gooble ใน 29 กรกฎาคม 2014, 07:41:18
ยกตัวอย่างนะครับ เช่น  01 - 10  และ  13 - 31 

เราจะมีวิธีเช็คยังไงว่า  01 เท่ากับ 10   หรือ  13  เท่ากับ 31

คือเราจะเช้คแค่ว่า เลข 2 ตำแหน่งมีค่าเท่ากันหรือเปล่า โดยไม่สนใจตำแหน่งที่อยู่

อีกข้อครับ จากด้านบน  ถ้าเอาตัวเลขไปใส่ใน array  เช่น  array("01", "10", "11", "31","13","11",);

อยากได้ผลลัพท์เป็น  01, 11, 13  โดยตัดค่าที่มันซ้ำออกอะครับ  ใครพอจะแนะนำได้บ้างครับ

้ถ้าเข้าใจไม่ผิด ก็ if ดักมันไปเลย ห้าๆๆ
วีพีเอสถูก บริการเช่าเครื่อง Server (เสมือน)ราคาถูกจาก VPSTOOK เริ่มต้นเพียง 350 บาทเท่านั้น!!
ได้รับการบริการที่เหนือกว่าในราคาที่ถูกกว่าท้องตลาดทั่วไป
Free กันยิง Firewall (DNS Amp, NTP Amp, MSSQL Amp, SSDP)
สามารถอ่านรายละเอียดได้ที่ [direct=https://www.vpstook.com]VPSTOOK.COM[/direct]

dekdoo

ขอตอบข้อที่ 2 ก่อนแล้วกันครับ เพราะข้อที่ 1 ไม่ค่อยเข้าใจคำถาม

ตัวอย่างโค้ด :


<?php
$array 
= array( "นก","ไก่""ปู""นก","ปู""ปลา" );
$result array_unique$array );
echo 
'<pre>';
print_r($result);
echo 
'</pre>';
?>




ผลลัพธ์ :
Array
(
    [0] => นก
    [1] => ไก่
    [2] => ปู
    [5] => ปลา
)

esanza.com

อ้างถึงจาก: dekdoo ใน 29 กรกฎาคม 2014, 10:47:05
ขอตอบข้อที่ 2 ก่อนแล้วกันครับ เพราะข้อที่ 1 ไม่ค่อยเข้าใจคำถาม

ตัวอย่างโค้ด :


<?php
$array 
= array( "นก","ไก่""ปู""นก","ปู""ปลา" );
$result array_unique$array );
echo 
'<pre>';
print_r($result);
echo 
'</pre>';
?>




ผลลัพธ์ :
Array
(
    [0] => นก
    [1] => ไก่
    [2] => ปู
    [5] => ปลา
)


เราจะมีวิธีเช็คยังไงว่า  01 เท่ากับ 10   หรือ  13  เท่ากับ 31

:wanwan016:
ใครต้องการเช่าโฮสที่มี Control Panel ดีๆ
และ Support ดี แนะนำ => [direct=https://support.hostatom.com/aff.php?aff=456]โฮสอะตอม[/direct]

icez

ที่งงข้อ 1 กันเพราะว่า 01 มันจะเท่ากะ 10 ได้ยังไงแค่นั้นแหละครับ

หรือหมายถึงว่ามีตัวอักษรเหมือนกันรึเปล่า?
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

ekateikate

ขอตอบ ข้อแรก นะ

13 = 31
หา length ของ 13 ได้เท่ากับ 2

แล้วก็วน loop lenght

เช็คตำแหน่งแรก
1 -> 3 = 0
1 -> 1 = 1

เช็คตำแหน่งที่สอง
3 -> 3 = 1
3 -> 1 = 0

เหมือนกัน 2 ตำแหน่ง

ไม่รู้ว่าอธิบายงงรึเปล่านะ

[direct=https://www.jitjai.com]Jitjai.com[/direct]

ttong

ผมลองคิดข้อหนึ่งเล่นๆ นะครับ

สมมุติ 13 = 31
เราเอา 13 เป็นตัวตั้ง เก็บลงตัวแปร $x
แล้วแตก 31 ออกเป็น 3 กับ 1 (อาจเก็บเป็น array)

จากนั้นแยกทำตามข้อ
a) เช็คว่าใน $x มี 3 อยู่หรือไม่
b) เช็คว่าใน $x มี 1 อยู่หรือไม่

ถ้า a และ b คำตอบคือใช่ทั้งสองข้อ ผลที่ได้คือ เท่ากัน

งงมั้ยครับ  :P

ปล. ผมคิดว่า อาจจะใช้ Regular Expression ช่วยได้นะ

น้องพี่ต้าร์

ใช่แบบที่ต้องการมะ บ้านๆ


<?php

$start
1;
$end 1000;
$arr = array();
for(
$i=$start;$i<=$end;$i++){

$countnum strlen($i);

if(
$countnum>2){
$z '%0'.$countnum.'d';
}else{
$z '%02d';
}
$x sprintf($z$i);
$pieces =$x;
$pieces str_split($x);
for (
$u $countnum-1$u>=0;$u--){

$arrp[] = $pieces[$u];
}
$pieces join("",$arrp);
$arrp null;

for($n=$start;$n<=$end;$n++){

if($pieces == $n){

$check sprintf($z$n). '=' .$x;
if (in_array($check$arr)){
}else{
$arr[] = $x'=' .sprintf($z$n);
}
}
}
}

foreach (
$arr as $number) {
   echo 
$number.'<br>';
}

?>


sbaydee

function check_number($num1,$num2){
$array1 = str_split($num1);
$array2 = str_split($num2);
if(count(array_diff($array1,$array2)) >0){
return TRUE;
}else{
return FALSE;
}
}

ลองดูครับว่าตรงกับความต้องการรึเปล่า

MiithRanDir

แบบลูกทุ่งครับ

<?
$num1 = 01;
$num2 = 10;
$j=0;
$k=1;

if(strlen($num1) < 2) { $num1 = '0' . $num1;}
if(strlen($num2) < 2) { $num2 = '0' . $num2;}

for($i=0;$i<strlen($num1);$i++) {
if(substr($num1,$k,1) == substr($num2,$j,1)) {
$result = "YES";
}
else {
$result = "NO";
}
$k--;
$j++;
}
echo $result;
?>
[direct=https://www.มังกรฟ้าเชิญมารวย.com]ล็อตเตอรี่ออนไลน์[/direct]

gooble

อ้างถึง<?php

$start= 1;
$end = 1000;
$arr = array();
for($i=$start;$i<=$end;$i++){

$countnum = strlen($i);

if($countnum>2){
   $z = '%0'.$countnum.'d';
}else{
   $z = '%02d';
}
$x = sprintf($z, $i);
$pieces =$x;
$pieces = str_split($x);
for ($u = $countnum-1; $u>=0;$u--){

   $arrp[] = $pieces[$u];
}
$pieces = join("",$arrp);
$arrp = null;

   for($n=$start;$n<=$end;$n++){

      if($pieces == $n){
      
      $check = sprintf($z, $n). '=' .$x;
         if (in_array($check, $arr)){
         }else{
            $arr[] = $x. '=' .sprintf($z, $n);
         }
      }
   }
}

foreach ($arr as $number) {
   echo $number.'<br>';
}

?>
ขอบคุณมากครับ แบบนี้เลย  :wanwan020:

CakePHP

ผมมั่วๆ เอาน่ะครับ ไม่ค่อยเก่ง PHP
ผมพยายามลด Code ลงให้น้อยลงประมาณ 50%
ผิด ถูก ประการใดขอท่านเซียนทั้งหลาย ช่วยแนะนำ
$a = array("01", "10", "11", "31","13","11", "07","70", "07");
$t = array();
for($i=0; $i<sizeof($a); $i++){
for($j=0; $j<sizeof($a); $j++){
if(!in_array($a[$i], $t) && !in_array(strrev($a[$i]), $t)){
$t[] = $a[$i];
break;
}
}
}
print_r($t);



hurahura

จากโจทย์ "คือเราจะเช้คแค่ว่า เลข 2 ตำแหน่งมีค่าเท่ากันหรือเปล่า โดยไม่สนใจตำแหน่งที่อยู่"

มันก็แค่สลับตำแหน่งกันง่ายๆไม่ใช่เหรอ หรือผมเข้าใจอะไรผิด?

$a = 13;
$b = 31;

if($a == $b || $a == substr($b,1).substr($b,0,1)){
echo "เท่ากัน";
}

CakePHP

อ้างถึงจาก: CakePHP ใน 29 กรกฎาคม 2014, 19:45:39
ผมมั่วๆ เอาน่ะครับ ไม่ค่อยเก่ง PHP
ผมพยายามลด Code ลงให้น้อยลงประมาณ 50%
ผิด ถูก ประการใดขอท่านเซียนทั้งหลาย ช่วยแนะนำ
$a = array("01", "10", "11", "31","13","11", "07","70", "07");
$t = array();
for($i=0; $i<sizeof($a); $i++){
for($j=0; $j<sizeof($a); $j++){
if(!in_array($a[$i], $t) && !in_array(strrev($a[$i]), $t)){
$t[] = $a[$i];
break;
}
}
}
print_r($t);




เอาใหม่ ลด Code ลงได้อีกแบบมั่วๆ น่ะครับ

//ข้อแรก
$str1 = "01";
$str2 = "10";
if($str1 == $str2 || $str1 == strrev($str2)){
echo "เท่ากัน<br />";
}

//ข้อสอง
$a = array("01", "10", "11", "31","13","11", "07","70", "07");
$t = array();
for($i=0; $i<sizeof($a); $i++){
if(!in_array($a[$i], $t) && !in_array(strrev($a[$i]), $t)){
$t[] = $a[$i];
}
}
print_r($t);




goldxp

ถ้าไม่สนใจตำแหน่งที่อยู่นะครับก็ sort ก่อนให้มันเรียงจากน้อยไปมากแล้วค่อยเปรียบเทียบครับ

<?php
$a 
= array("01""10""11""31","13","11""101""110");
$list = array();
foreach(
$a as $i){
   
$conv str_split($i);
   
sort($conv);
   if (!
in_array($conv,$list)){
         
$list[] = $conv;
   }
}
foreach(
$list as $i){
   echo 
implode("",$i),',';
}
[direct=http://web-programming-bookmark.blogspot.com/p/blog-page.html]รับแก้ไขเว็บ[/direct]