วันนี้ผมเกิดอยากใช้ array_filter ขึ้นมามันต้องเรียก callback (function) ในกรณีปกติที่เป็น callback function ลอยๆ ก็ทำได้ไม่ยากเช่น
function isNotEmptyLine($line) {
return !preg_match("/^\s*$/");
}
$lines = array_filter($lines, "isNotEmptyLine");
เท่านี้ก็เป็นอันใช้ได้ … แต่ถ้า isNotEmptyLine ดันเข้าไปอยู่ใน class หละ
class SomeThingReader {
function isNotEmptyLine($line) {
return !preg_match("/^\s*$/");
}
function read($lines) {
$lines = array_filter($lines, "isNotEmptyLine"); // < -- เจ๊ง!!!
// $lines = array_filter($lines, "this->isNotEmptyLine"); ก็เจ๊ง
// $lines = array_filter($lines, "SomeThingReader->isNotEmptyLine"); ก็เจ๊งอยู่ดี
}
}
พอเข้าไปอ่านดีที่ http://www.php.net/manual/en/function.array-filter.php ใน comment เลยทีเดียว ก็พบว่าทำแบบนี้
$lines = array_filter($lines, array($this, "isNotEmptyLine"));
อาจจะดูแปลกๆ แต่ก็ใช้ได้นะ :-P.
ทำลังหาอยู่ครับ ขอบคุณครับ
Comment โดย phet — 19 มิถุนายน 2009 @ 09:57