การใช้ foreach array ใน codeigniter

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา การใช้ foreach array ใน codeigniter

การใช้ foreach array ใน codeigniter
สวัสดีครับ ผมมีเรื่องสอบถามเกี่ยวกับ array ของ codeigniter ครับ

$results=$this->search_model->searchApprove($empid); //อันนี้คือค่าที่มาจาก model ซึ่งเป็น array ในนั้นมีข้อมูลเป็นประเภท datetime อยู่ครับ ซึ่งผมต้องการให้เป็นเพียง date อย่างเดียว จกานั้นผมจึงทำการ foreach เพื่อดึงเฉพาะค่า datetime  มาทำเป็น date อย่างเดียวแบบนี้ครับ

foreach($results as $row)
{
$datetime=$row->date;
$parts=explode(" ", $datetime);
$time=array_pop($parts);
$data['date']=implode(" ", $parts);
}

มันเป็น code ที่เกี่ยวกับการตัด string เหมือนๆ กับการแบ่ง ชื่อและนามสกุลออกจากกัน ซึ่งลองใช้งานแล้วเวิคครับ สามารถใช้ได้ ผมจะได้ date มาอย่างเดียวในบรรทีดนี้ $data['date']=implode(" ", $parts);

แต่เนื่องจากมันมี user หลายคน มันไม่เก็บเป็น array ซึ่งมันจะเก็บแค่คนสุดท้าย เพราะว่าเป็นการกำหนดค่าคนสุดท้ายอ่ะครับ แล้วแบบนี้ผมจะเก็บเป็น array ยังไงหรอครับ

ถามต่อครับ เมื่อผมส่งค่า array ไปที่หน้า view แล้ว ผมจะ foreach เอาค่าออกมาทีละค่ายังไงได้บ้างครับ ซึ่งผมลองทำดู ปรากฎว่ามันทำได้แต่แบบนี้ครับ $data['abcd'] ซึ่งเมื่อนำไป foreach จะทำได้เฉพาะค่าที่เป็น array ที่อยู่ในตัวแปรของ data เท่านั้นแบบนี้ครับ

<?php foreach ($abcd as $row):?>
...<?=$row->1234(ค่าที่เป็น array)?>
<?php endforeach;?>

ไม่ทราบพอจะมีการส่งและเรียกออกมาอีกไหมครับ ขอบคุณครับ


Aong35258 13-07-2016 09:35:21

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
 ไม่เข้าใจที่ถามน่ะ ลองยกตัวอย่างค่า และตัวอย่างผลลัพธ์ที่ต้องการ น่าจะสื่อได้ง่ายกว่า


ninenik 13-07-2016
 ความคิดเห็นที่ 2
$results=$this->search_model->searchApprove($empid);
อันนี้ค่า 
$results มันเป็นข้อมูลประเภท array ครับ ซึ่งมันไปดึงมาจาก database ซึ่งข้อมูลในนั้นก็จะมีดังนี้ครับ
name=Title
surname=Test
date=
2016-07-11 14:48:00
แบบนี้ครับ ซึ่งข้อมูลมันก็มีประมาน 20 คนครับ
จากนั้นผมก็ทำการดึงเอาเฉพาะวันที่หรือ date ออกมาครับโดยใช้ foreach แบบนี้ครับ
foreach($results as $row)
{
$datetime=$row->date;//นำค่าใน $results ซึ่งเป็นประเภท array ที่เป็น date ไปเก็บไว้ในตัวแปร $datetime
$parts=explode(" ", $datetime);//ทำการตัด string เมื่อเจอเว้นวรรค เนื่องจากข้อมมูลวันที่มันเป็นแบบนี้ครับ 2016-07-11 14:48:00 ซึ่งมีการเว้นวรรคระหว่างวันที่และเวลา
$time=array_pop($parts);//ค่าด้านหลังเป็นเวลาซึ่งนำไปเก็บใน $time
$data['date']=implode(" ", $parts);//ค่าด้านหน้าเป็นวันที่ซึ่งนำไปเก็บใน $data['date'] แต่เนื่องจาก foreach มันจะทำจนกว่าจะหมดใช่ไหมครับ เมื่อทำหมดแล้ว มันเก็บแค่ค่าตัวสุดท้าย ที่มันทำการประมวลผล ไม่ยอมเก็บเป็น array ซึ่งมันมี user จำนวน 20 คน ผมอยากให้มันเก็บทั้งหมด 20 คนอ่ะครับ
}
 


aong35258 13-07-2016 10:15
 ความคิดเห็นที่ 3
แนวทางการส่ง array $data กลับไปใช้งานใน view ของ codeigniter 
ลองใช้ประมาณนี้ สมมติเราจะส่งข้อมูลของลูกค้าที่เป็นชุดข้อมูล array จาก $result

<?php
$data['customers'] = array();

$result = $this->model_...............

foreach ($result as $row) {
	$datetime=$row['date'];
	$arr_datetime=explode(" ",$datetime); // ถ้ารุปแบบเวลาเป้น 0000-00-00 00:00:00
	$data['customers'][] = array(
		'data_filed_1'    => $row['filed_1'],
		'date'    => $arr_datetime[0],  // array key แรก เป็น วันที่ 
		'time'    => $arr_datetime[1],	// array key ที่สองเป็น เวลา			
		'data_filed_2'         => $row['filed_2']
	);
}
		
?>


เวลาเอาไปใช้ใน view ก็ประมาณนี้

<?php if($customers){?>
<?php foreach ($customers as $customer) { ?>

		<div><?php echo $customer['data_filed_1']; ?></div><br>
		<div><?php echo $customer['date']; ?></div><br>
		<div><?php echo $customer['time']; ?></div><br>                

<?php } ?>
<?php } ?>


 


ninenik 13-07-2016
 ความคิดเห็นที่ 4

ได้แล้วครับผม


aong35258 13-07-2016 14:21
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ