รบกวนเรื่องArrayอีกครั้งครับ รบกวนด้วยครับ

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: รบกวนเรื่องArrayอีกครั้งครับ รบกวนด้วยครับ

Re: รบกวนเรื่องArrayอีกครั้งครับ รบกวนด้วยครับ

โดย mindphp » 01/12/2010 2:44 pm

ถ้ารับ input มาก็ควรตั้งชื่อ key ที่ต้องการใช้จะดีกว่านะครับ
ตามแบบที่ ท่าน secivon แนะนำ กำหนดเอาตอน input
ส่วนถ้ายืนยันจะเอาแบบเดิมก็ลองดูโค้ดที่ผมแนะนำ (ช่วยแก้ปัญหาตามที่ถามมาครับ)

Re: รบกวนเรื่องArrayอีกครั้งครับ รบกวนด้วยครับ

โดย secivon » 01/12/2010 2:31 pm

กรณีนี้ แนวคิดไม่น่าจะอยู่ที่การเอา element ณ ตำแหน่งใดๆออก แต่น่าจะเป็นการเลือกเฉพาะ Hash ที่มี Key เป็นตัวเลขมาใช้มากกว่ามั๊งครับ

+ ไม่แน่ใจว่า syntax ของ type casting ใน PHP มันได้ผลลัพธ์เหมือน C ทุก case หรือเปล่า

ลองเปลี่ยน

โค้ด: เลือกทั้งหมด

if ($topic_id == (int) $topic_id)
เป็น

โค้ด: เลือกทั้งหมด

if(is_int($topic_id))
หรือ

โค้ด: เลือกทั้งหมด

if ($topic_id == int_val($topic_id)) 
ดูครับ


ปล.สามารถใช้วิธีตั้งชื่อ ของ form element ใน page ก่อนหน้านี้เอาได้นะครับ เช่น

โค้ด: เลือกทั้งหมด

<input name="to_update[576]" value="26">
ผลลัพธ์ก็จะมาอยู่ใน $_POST['to_update']['576'] เลย

Re: รบกวนเรื่องArrayอีกครั้งครับ รบกวนด้วยครับ

โดย 4404 » 30/11/2010 8:35 am

ขอบคุณคุณ mindphp มากครับจะลองทำดู ผลอย่างไรจะมารายงานครับ

Re: รบกวนเรื่องArrayอีกครั้งครับ รบกวนด้วยครับ

โดย mindphp » 30/11/2010 1:56 am

each() แต่ละครั้ง มีนจะไปที่ key ถัดไปของ array นั้นๆครับ
ลองใช้ function each ดูครับ
หรือ จะ ใส่ Loop และ เพิ่มตัวเลขประจำแต่ละ loop เอา
ใน loop ก็ถ่ายว่าไปใส่ตัวแปล array อีกตัวหนึ่ง

โค้ด: เลือกทั้งหมด

$i=0;
$a_new = array();
$n = count($a);
foreach($a as $k=>$v){
 $i++;
 if($i>1 && ($i<$n-4) ) {
  $a_new[$k] = $v;
}
}
 
จะได้ $a_new เอาไปใ้ช้ต่อครับ

ปล.ยังไม่ได้debug นะครับเขียนสดๆ ลองเอาไปรันดูครับ $a คือตัวแปล array ที่รับเข้ามาใช้

รบกวนเรื่องArrayอีกครั้งครับ รบกวนด้วยครับ

โดย Phutawan » 29/11/2010 11:06 pm

- ต้องการจะเอาArrayแรก และ Array 4 ตัวสุดท้ายออกจะทำอย่างไรครับ
<?
include("header.inc.html");
?>
<?
print_r($_POST);
echo "<br>";

$project_id = $_REQUEST['project_id'];
echo "<br>";
echo "ID :", $project_id,"<br>" ;

$n = count($_POST);
echo "Count = ",$n,"<br>";

//ที่พี่ท่านหนึ่งลองทำแล้วไม่ได้ครับ รบกวนด้วยครับ$updatedata = array();
foreach ($_POST as $topic_id => $item)
{
if ($topic_id == (int) $topic_id)
{
$updatedata[$topic_id] = $item;
}
}
print_r($updatedata);

$comment1 = $_POST["textarea"];
$comment2 = $_POST["textarea2"];
$comment3 = $_POST["textarea3"];

echo "<br>";
echo "ความคิดเห็นที่ 1",$comment1,"<br>" ;
echo "ความคิดเห็นที่ 2",$comment2,"<br>" ;
echo "ความคิดเห็นที่ 3",$comment3,"<br>" ;
?>

สิ่งที่ออกมาครับ
Array ( [project_id] => 1 [567] => 26 [568] => 28 [571] => 41 [textarea] => [textarea2] => [textarea3] => [Submit] => บันทึกข้อมูล )

ID :1
Count = 8
Array ( [project_id] => 1 [567] => 26 [568] => 28 [571] => 41 [textarea] => [textarea2] => [textarea3] => [Submit] => บันทึกข้อมูล )
ความคิดเห็นที่ 1
ความคิดเห็นที่ 2
ความคิดเห็นที่ 3

ข้างบน