韌館-LearnHouse

[PHP]foreach

內容來源:LINK     (此篇文章僅供站長備份參考用,固為加密文章)

PHP 4(不是 PHP 3)包括了 foreach 結構,和 Perl 以及其他語言很像。這只是一種遍歷陣列簡便方法。foreach 僅能用於陣列,當試圖將其用於其它資料型別或者一個未初始化的變數時會產生錯誤。有兩種語法,第二種比較次要但卻是第一種的有用的擴展。

foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement

第一種格式遍歷給定的 array_expression 陣列。每次循環中,當前單元的值被賦給 $value 並且陣列內部的指針向前移一步(因此下一次循環中將會得到下一個單元)。

第二種格式做同樣的事,只除了當前單元的鍵值也會在每次循環中被賦給變數 $key

 

註: foreach 開始執行時,陣列內部的指針會自動指向第一個單元。這意味著不需要在 foreach 循環之前呼叫 reset()

 

註: 此外注意 foreach 所操作的是指定陣列的一個拷貝,而不是該陣列本身。因此即使有 each() 的建構,原陣列指針也沒有變,陣列單元的值也不受影響。

註: foreach 不支援用“@”來禁止錯誤訊息的能力。

你可能注意到了以下的代碼功能完全相同:

reset ($arr);
while (list(, $value) = each ($arr)) {
echo "Value: $value<br>n";
}

foreach ($arr as $value) {
echo "Value: $value<br>n";
}

以下代碼功能也完全相同:

reset ($arr);
while (list($key, $value) = each ($arr)) {
echo "Key: $key; Value: $value<br>n";
}

foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value<br>n";
}

示範用法的更多例子:

/* foreach example 1: value only */

$a = array (1, 2, 3, 17);

foreach ($a as $v) {
print "Current value of $a: $v.n";
}

/* foreach example 2: value (with key printed for illustration) */

$a = array (1, 2, 3, 17);

$i = 0; /* for illustrative purposes only */

foreach($a as $v) {
print "$a[$i] => $v.n";
$i++;
}

/* foreach example 3: key and value */

$a = array (
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);

foreach($a as $k => $v) {
print "$a[$k] => $v.n";
}

/* foreach example 4: multi-dimensional arrays */

$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach($a as $v1) {
foreach ($v1 as $v2) {
print "$v2n";
}
}

/* foreach example 5: dynamic arrays */

foreach(array(1, 2, 3, 4, 5) as $v) {
print "$vn";
}
2007年9 月 posted by admin in 程式&軟體 and have Comment (1)

[PHP]全域變數-global

內容來源:Link    (此篇文章僅供站長備份參考用,固為加密文章)

變數的範圍即它定義的上下文背景(譯者:說白了,也就是它的生效範圍)。大部分的 PHP 變數只有一個單獨的範圍。這個單獨的範圍跨度同樣包含了 include 和 require 引入的文件。範例:

<?php
$a = 1;
include "b.inc";
?>

這裡變數 $a 將會在包含文件 b.inc 中生效。但是,在用戶自定義函式中,一個局部函式範圍將被引入。任何用於函式內部的變數按預設情況將被限制在局部函式範圍內。範例:

<?php
$a = 1; /* global scope */

function Test()
{
echo $a; /* reference to local scope variable */
}

Test();
?>

這個腳本不會有任何輸出因為 echo 語句引用了一個局部版本的變數 $a, 而且在這個範圍內,它並沒有被設值。你可能注意到 PHP 的全域變數和 C 語言有一點點不同,在 C 語言中,全域變數在函式中自動生效,除非被局部變數覆蓋。這可能引起一些問題,有些人可能漫不經心的改變一個全域變數。 PHP 中全域變數在函式中使用時必須申明為全域。例如:

<?php
$a = 1;
$b = 2;

function Sum()
{
global $a, $b;

$b = $a + $b;
}

Sum();
echo $b;
?>

以上腳本的輸出將是 "3"。在函式中申明了全域變數 $a$b,任何變數的所有引用變數都會指向到全域變數。對於一個函式能夠申明的全域變數的最大個數,PHP 沒有限制。

在全域範圍內連接變數的第二個辦法,是用特殊的 PHP 自定義 $GLOBALS 陣列。前面的例子可以寫成:

<?php
$a = 1;
$b = 2;

function Sum()
{
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}

Sum();
echo $b;
?>

$GLOBALS 陣列中,每一個變數為一個元素,鍵名對應變數名,值變數的內容。$GLOBALS 之所以在全域範圍內存在,是因為 $GLOBALS 是一個 superglobal 變數。

2007年9 月 posted by admin in 程式&軟體 and have No Comments

[Java]autoboxing與unboxing

內容來源良葛格學習筆記    (此篇文章僅供站長備份參考用,固為加密文章)
 

在Java中,所有您要處理的東西「幾乎」都是物件(Object),例如您之前所使用的Scanner是物件,字串(String)是物件,您之後還會看到更多的物件。

然而有些是例外,基本(Primitive)資料型態不是物件,也就是您使用int、double、boolean等宣告的變數,以及您在程式中直接寫下的字面常量。

使用Java有一段時間的人都知道,有些時候您需要將基本型態轉換為物件,例如使用Map時,要使用put()方法時需要的是物件而不是基本型態。

您要使用包裹型態(Wrapper Types)才能將基本資料型態包裝為物件,例如在 J2SE 1.4.2 之前,您要如下才能將int包裝為一個Integer物件:

Integer integer = new Integer(10);

J2SE 5.0 之後您可以這麼寫:

Integer integer = 10;

事實上編譯器在背後自動根據您寫下的陳述,為您進行自動裝箱(Autoboxing)動 作,同樣的動作可以適用於 boolean、byte、short、char、long、float、double等基本型態,分別會使用對應的包裹型態(Wrapper Types)Boolean、Byte、Short、Character、Integer、Long、Float或Double。

自動裝箱運用的方法還可以如下:

int i = 10;
Integer integer = i;

 
您也可以使用更一般化的Number,例如:

Number number = 3.14f;

3.14f會先被自動裝箱為Float,然後指定給number。

J2SE 5.0中可以自動裝箱,也可以自動拆箱(Unboxing),例如下面這樣寫是可以的:

Integer fooInteger = 10;
int fooPrimitive = fooInteger;

 
在運算時,也可以自動裝箱與拆箱,例如:

Integer i = 10;
System.out.println(i + 10);
System.out.println(i++);

上例中會顯示20與10,編譯器會自動幫您進行自動裝箱與拆箱,即10會先被裝箱,然後在i + 10時會先拆箱,進行加法運算;i++該行也是先拆箱再進行遞增運算。再來看一個例子:

Boolean boo = true;
System.out.println(boo && false);

同樣的,先將boo拆箱,再與false進行AND運算,結果會顯示false。

2007年9 月 posted by admin in 程式&軟體 and have No Comments

戰國無雙系列之字幕惡搞

這幾天一直覺得這首歌搭配起來很好聽,重複看了N遍了,所以把它拉到前面來

戰國無雙之霍元甲MV版

戰國無雙-星巴克

戰國無雙之誰是導演_第1集

戰國無雙之誰是導演_第2集

戰國無雙之誰是導演_第3集

2007年9 月 posted by admin in 趣味一下 and have No Comments

知識+上的國考資訊

看到這標題,我的好友們會不會有人以為我要考國考了

呵呵!!其實只是因為好奇啦!!而且做個參考也不錯阿!!

不難保哪天我對企業上的總總不順心,或心意改變了

突然想當國家的米蟲了!!厭倦企業的爾虞我詐

多點人生的道路可以選也不不錯的選擇

以下是我轉貼知識+上的資訊 

我是去年的畢業生..因為不知道未來的路該往哪走

所以目前在家裡幫忙 最近開始接觸到有關各種國家考試的事情

覺得自己也許可以考看看 我覺得地方特考的條件比較適合我

我沒有準備過國家考試 所以沒什麼概念

如果從現在開始準備的話 到12月考地方政府特考會太晚嗎************************不會

準備的科目範圍會很多嗎?...****************************是看考何種職系

請給予意見~感激!!

建議你有大專以上考三等好..

不然考上你還會在考ㄉ...因為同工不同酬..........

建議你..用功念就對沒所謂不晚早不早的問題..

我當初花5個月也是考上三等地方特考

以下幫你比較高與地特考的特性

1.在考上後的差異性?2.任職職位有什麼差別?

高考及地方特考三等佔6等1薪約45000

普考及地方特考四等佔-3等1新約34500(順利約工作10年後可考薦任升官等考試)

初考及地方特考五等佔等1新約28900

差很多

1.官職等與薪水

2.行政上的位階

3.主官升遷考量

初考佔書記-----順利5年升辦事員1-3職等

普考佔辦事員----順利10年升辦事員3-5職等

高考佔科員------考上就呆在這個地方等你們啦5-7職等

所以高考的能力夠.舞台夠大.就ㄧ路專員.稽核.科長.專門委員-------------

而初考及格的卻要花16年才能爬到相當位置

3.高考的分級又是什麼?

一級博士畢業佔9等1薪約78500

二級碩士畢業佔7等1薪約56200

三級大專或學士畢業佔7等1薪約46200

4.高考的分級有資格限定嗎?....有**除學歷限制.專門職係限相關科系..如建築]

5.我報補習班應該報哪間比較適合?

6.九華..實力... 志光...翰昇..到底哪間好?*************請去試聽**每個人的需求不一樣**要看各班專業**建築是很專業的

7.補習班的班別分那麼多種?..我是屬於哪一種阿?土木建築類ㄉ專業

8.考上後..是公務員..還是〤〤技師阿?~謝謝 薪水公務員..6等1技士新約46200

懇請在知識網的專家大力幫忙.

所以建議你直接考高考..

不燃就跟我一樣

普考(無綁約.只有前4個月受訓)

及格後工作1年

又再考地特三等(有綁約6年4個月)

*************

[ 地方政府人員特考 ] 會很難考嗎 ?

比高考簡單一些.但算是難.錄取率由0.5-55%都有

大部分會去考的人是哪種社會族群 ? ex : 大學畢業生??

最多是大學.再來是專科.現在碩博士也多了

如果在北部考考上了 , 就是一直在北部工作嗎 ?然後一直做到

想退休是嗎 ?

可以一直到退休

全國共分

1.台灣北區

.2.台灣中區

3.台灣南區

4.台灣東區

5.台北市區

6.高雄市區

7.福建省金門區

8.福建省連江區

9.台灣省澎湖區

9大錄取分發區...

假設..

你考台北縣錄取分發區..

並且高中三等地特土木工程科

分發台北縣鶯歌鎮公所佔建設課薦任六職等技士缺實務訓練薪46200

主辦小型工程之設計.規劃.監工

並於950601報到

那麼

實務訓練期間是

950601-950930(高考/普考/初考只要過了這個時間就自由轉..無限制)

限制前三年不得調離原分發實務訓練機關

就是951001-980930前不能離開鶯歌鎮公所

限制後三年不得離開原錄取分發區(但可在下列北區縣市 之地方機關自由調動)

就是981001-1010930之前不得離開台北縣.桃園縣.新竹縣.新竹市.基隆市.宜蘭縣

我不太懂 .....但我很有興趣呢 !! 謝謝指教 ^^

---------------------------------------------------

-//----------------------------

☼我一直在思考... 以後想從事什麼工作

----公職.是不錯.生活也穩定.你可能會失去夢想與企圖心..

你可能鎮日汲汲營營的為了考績.與同事互不對盤...

或是別人挖坑給你跳--

所以要看你的個姓

如果你沒有強烈的物慾----(免被監商利用.貪污.圖利)

如果你有民胞物與的心念(站在百姓的立場看政策)

如果你知道依法行政.(在法律的立場看行政措施)

如果你可以拿行政倫理..(在公務門中..要修行的課題.開門關門.應對進退都是學問)

如果你能在地方選舉派系中遊刃有餘..(政治雖跟事務官無關.但是..........很難)

如果你清楚蓋下職章的那ㄧ剎那自己該擔負的法律責任.(擬辦時你就要簽好保護自己的字句..........)

如果你能不計較考績年終.職等

那麼你也不計較自己越來越不像自己..

2007年9 月 posted by admin in 文獻參考 and have No Comments

最簡便的備份MySql資料庫方法

為了同步兩個系統的程式與資料庫,因此用phpmyadmin把資料庫匯出成SQL檔

然後在備援Server匯入!!搞了好久的資料庫!!怎麼用都會有亂碼

從所有的環境變數開刀,對照了系統語系、MySQL語系、資料庫資料表、與phpmyadmin設定

都改成相同了可是就是有問題,後來找出原因是因為我太依賴phpmyadmin的匯出功能了

所以導致匯入到另外一個資料時是錯誤的編碼格式

以下是用mysqldump所匯出來的資料庫備份時所可以用的選項

其實說穿了只是用--help可以看到的所有選項參數

不過以下這篇的選樣說明是中文的,給有需要的人參考看看吧!!

使用MYSQL進行資料庫備份,有很正規的資料庫備份方法,同其他的資料庫伺服器有相同的概念,但有沒有想過,MySQL會有更簡捷的使用檔目錄的備份方法,而且又快有好。  
 
一、資料備份捷徑  
 
因為這個方法沒有得到官方正式文檔的驗證,我們暫稱為試驗吧。  
 
目的:備份hostA主機中一個mysql資料庫TestA,並恢復到到hostB機中  
 
試驗環境:  
 
作業系統:WinNT4.0,Mysql3.22.34,phpMyAdmin 2.1.0  
 
在hostA中安裝mysql資料庫並建立TestA資料庫  
 
hostB機安裝mysql資料庫,沒有TestA資料庫  
 
方法步驟:  
 
啟動phpMyAdmin察看HostA和HostB中的資料庫列表,在HostB中沒有TestA資料庫  
 
找到HostA中mysql的安裝目錄,並找到資料庫目錄data  
 
在我的試驗環境中,這個目錄是  
 
C:mysqldata  
 
找到對應資料庫名稱的子目錄  
 
C:mysqldataTestA  
 
粘貼拷貝到HostB的Data目錄下,是HostA同HostB Mysql資料目錄下的檔相同  
 
刷新HostB的phpMyAdmin察看一下資料庫列表,我們看到TestA已經出現,並且作查詢修改等操作都正常,備份恢復恢復成功  
 
試驗結論:Mysql的資料庫可以通過檔形式保存,備份,恢復只要將相應檔目錄恢復即可,無需使用其他工具備份。  
 
二、正規的方法(官方建議):  
 
導出要用到MySQL的mysqldump工具,基本用法是:  
 
          

代碼:
mysqldump [OPTIONS] database [tables]  


 
如果你不給定任何表,整個資料庫將被導出。  
 
通過執行mysqldump --help,你能得到你mysqldump的版本支援的選項表。  
 
注意,如果你運行mysqldump沒有--quick或--opt選項,mysqldump將在導出結果前裝載整個結果集到記憶體中,如果你正在導出一個大的資料庫,這將可能是一個問題。  
 
mysqldump支援下列選項:  
 
--add-locks  
 
在每個表導出之前增加LOCK TABLES並且之後UNLOCK TABLE。(為了使得更快地插入到MySQL)。  
 
--add-drop-table  
 
在每個create語句之前增加一個drop table。  
 
--allow-keywords  
 
允許創建是關鍵字的列名字。這由在列名前面加表名的方法做到。  
 
-c, --complete-insert  
 
使用完整的insert語句(用列名字)。  
 
-C, --compress  
 
如果客戶和伺服器均支援壓縮,壓縮兩者間所有的資訊。  
 
--delayed  
 
用INSERT DELAYED命令插入行。  
 
-e, --extended-insert  
 
使用全新多行INSERT語法。(給出更緊縮並且更快的插入語句)  
 
-#, --debug[=option_string]  
 
跟蹤程式的使用(為了調試)。  
 
--help  
 
顯示一條幫助消息並且退出。  
 
--fields-terminated-by=...  
 
--fields-enclosed-by=...  
 
--fields-optionally-enclosed-by=...  
 
--fields-escaped-by=...  
 
--fields-terminated-by=...  
 
這些選擇與-T選擇一起使用,並且有相應的LOAD DATA INFILE子句相同的含義。  
 
LOAD DATA INFILE語法。  
 
-F, --flush-logs  
 
在開始導出前,洗掉在MySQL伺服器中的日誌檔。  
 
-f, --force,  
 
即使我們在一個表導出期間得到一個SQL錯誤,繼續。  
 
-h, --host=..  
 
從命名的主機上的MySQL伺服器導出資料。缺省主機是localhost。  
 
-l, --lock-tables.  
 
為開始導出鎖定所有表。  
 
-t, --no-create-info  
 
不寫入表創建資訊(CREATE TABLE語句)  
 
-d, --no-data  
 
不寫入表的任何行資訊。如果你只想得到一個表的結構的導出,這是很有用的!  
 
--opt  
 
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。  
 
應該給你為讀入一個MySQL伺服器的盡可能最快的導出。  
 
-pyour_pass, --password[=your_pass]  
 
與伺服器連接時使用的口令。如果你不指定“=your_pass”部分,mysqldump需要來自終端的口令。  
 
-P port_num, --port=port_num  
 
與一台主機連接時使用的TCP/IP埠號。(這用於連接到localhost以外的主機,因為它使用 Unix套接字。)  
 
-q, --quick  
 
不緩衝查詢,直接導出至stdout;使用mysql_use_result()做它。  
 
-S /path/to/socket, --socket=/path/to/socket  
 
與localhost連接時(它是缺省主機)使用的套接字檔。  
 
-T, --tab=path-to-some-directory  
 
對於每個給定的表,創建一個table_name.sql檔,它包含SQL CREATE 命令,和一個table_name.txt檔,它包含資料。 注意:這只有在mysqldump運行在mysqld守護進程運行的同一台機器上的時候才工作。.txt檔的格式根據--fields-xxx和-- lines--xxx選項來定。
 
-u user_name, --user=user_name  
 
與伺服器連接時,MySQL使用的用戶名。缺省值是你的Unix登錄名。  
 
-O var=option, --set-variable var=option  
 
設置一個變數的值。可能的變數被列在下面。  
 
-v, --verbose  
 
冗長模式。列印出程式所做的更多的資訊。  
 
-V, --version  
 
列印版本資訊並且退出。  
 
-w, --where='where-condition'  
 
只導出被選擇了的記錄;注意引號是強制的!  
 
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"  
 
最常見的mysqldump使用可能製作整個資料庫的一個備份:  
 
          

代碼:
mysqldump --opt database > backup-file.sql  


 
但是它對用來自於一個資料庫的資訊充實另外一個MySQL資料庫也是有用的:  
 
          

代碼:
mysqldump --opt database | mysql --host=remote-host -C database  


 
由於mysqldump導出的是完整的SQL語句,所以用mysql客戶程式很容易就能把資料導入了:  
 
          

代碼:
mysqladmin create target_db_name  
 
mysql target_db_name < backup-file.sql  


 
http://tech.ccidnet.com/art/1105/20050804/303341_1.html
http://ria.richtechmedia.com/category/phpmysql/

 

 

 

2007年9 月 posted by admin in Linux and have No Comments