你做好程序以后,把數(shù)據(jù)庫(kù)導(dǎo)出成sql文件(這個(gè)文件里就已經(jīng)有了一下創(chuàng)建數(shù)據(jù)表,添加數(shù)據(jù)記錄等的一些sql語(yǔ)句了)
成都創(chuàng)新互聯(lián)長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為永安企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),永安網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
新建一個(gè)安裝文件:
1、連接數(shù)據(jù)庫(kù)(安裝的時(shí)候不是要填寫一些數(shù)據(jù)庫(kù)連接參數(shù)等嗎)
2、讀取這個(gè)sql文件里的sql語(yǔ)句,并執(zhí)行
3、生成一個(gè)數(shù)據(jù)庫(kù)連接參數(shù)的php文件
就這么簡(jiǎn)單,思路是這樣啊,具體這么實(shí)現(xiàn),你自己慢慢研究
你做好程序以后,把數(shù)據(jù)庫(kù)導(dǎo)出成sql文件
1、連接數(shù)據(jù)庫(kù)
2、讀取這個(gè)sql文件里的sql語(yǔ)句,并執(zhí)行
3、生成一個(gè)數(shù)據(jù)庫(kù)連接參數(shù)的php文件
?php
$con?=?mysql_connect("localhost","peter","abc123");
if?(!$con)
{
die('Could?not?connect:?'?.?mysql_error());
}
if?(mysql_query("CREATE?DATABASE?my_db",$con))
{
echo?"Database?created";
}
else
{
echo?"Error?creating?database:?"?.?mysql_error();
}
mysql_close($con);
?
?php
class?ReadSql?{
//數(shù)據(jù)庫(kù)連接
protected?$connect?=?null;
//數(shù)據(jù)庫(kù)對(duì)象
protected?$db?=?null;
//sql文件
public?$sqlFile?=?"";
//sql語(yǔ)句集
public?$sqlArr?=?array();
public?function?__construct($host,?$user,?$pw,?$db_name)?{
$host?=?empty($host)???C("DB_HOST")?:?$host;
$user?=?empty($user)???C("DB_USER")?:?$user;
$pw?=?empty($pw)???C("DB_PWD")?:?$pw;
$db_name?=?empty($db_name)???C("DB_NAME")?:?$db_name;
//連接數(shù)據(jù)庫(kù)
$this-connect?=?mysql_connect($host,?$user,?$pw)?or?die("Could?not?connect:?"?.?mysql_error());
$this-db?=?mysql_select_db($db_name,?$this-connect)?or?die("Yon?can?not?select?the?table:"?.?mysql_error());
}
//導(dǎo)入sql文件
public?function?Import($url)?{
$this-sqlFile?=?file_get_contents($url);
if?(!$this-sqlFile)?{
exit("打開文件錯(cuò)誤");
}?else?{
$this-GetSqlArr();
if?($this-Runsql())?{
return?true;
}
}
}
//獲取sql語(yǔ)句數(shù)組
public?function?GetSqlArr()?{
//去除注釋
$str?=?$this-sqlFile;
$str?=?preg_replace('/--.*/i',?'',?$str);
$str?=?preg_replace('/\/\*.*\*\/(\;)?/i',?'',?$str);
//去除空格?創(chuàng)建數(shù)組
$str?=?explode(";\n",?$str);
foreach?($str?as?$v)?{
$v?=?trim($v);
if?(empty($v))?{
continue;
}?else?{
$this-sqlArr[]?=?$v;
}
}
}
//執(zhí)行sql文件
public?function?RunSql()?{
foreach?($this-sqlArr?as?$k?=?$v)?{
if?(!mysql_query($v))?{
exit("sql語(yǔ)句錯(cuò)誤:第"?.?$k?.?"行"?.?mysql_error());
}
}
return?true;
}
}
//范例:
header("Content-type:text/html;charset=utf-8");
$sql?=?new?ReadSql("localhost",?"root",?"",?"log_db");
$rst?=?$sql-Import("./log_db.sql");
if?($rst)?{
echo?"Success!";
}
?
數(shù)據(jù)字典是什么
進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候,對(duì)數(shù)據(jù)庫(kù)元素進(jìn)行的解釋說(shuō)明就是數(shù)據(jù)字典。舉個(gè)例子吧,假設(shè)有下面這個(gè)設(shè)計(jì)出來(lái)的數(shù)據(jù)庫(kù)表:
player(fname, lname, account, pwd, email)
對(duì)應(yīng)的數(shù)據(jù)字典就是:
player:玩家信息表
fname:玩家名
lname:玩家姓
account:賬戶名
pwd:密碼
email:聯(lián)系電郵
這里只是一個(gè)針對(duì)某一表的數(shù)據(jù)字典,還有針對(duì)表與表之間關(guān)系的數(shù)據(jù)字典、表內(nèi)字段屬性的數(shù)據(jù)字典等等。越是大型的數(shù)據(jù)庫(kù)設(shè)計(jì),越是需要數(shù)據(jù)字典來(lái)輔助進(jìn)行設(shè)計(jì)說(shuō)明,幫助設(shè)計(jì)人員之間的溝通與交流。
SQL數(shù)據(jù)庫(kù)數(shù)據(jù)字典怎么生成的?
數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的 *** ,也就是對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的 *** 。
數(shù)據(jù)庫(kù)數(shù)據(jù)字典是一組表和視圖結(jié)構(gòu)。它們存放在SYSTEM表空間中。
數(shù)據(jù)庫(kù)數(shù)據(jù)字典不僅是每個(gè)數(shù)據(jù)庫(kù)的中心。而且對(duì)每個(gè)用戶也是非常重要的信息。用戶可以用SQL語(yǔ)句訪問(wèn)數(shù)據(jù)庫(kù)數(shù)據(jù)字典。
生成數(shù)據(jù)庫(kù)參考代碼如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date: 2014-09-19
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[CreateDatabaseDictionarie]
AS
BEGIN
DECLARE @TableName nvarchar(35),@htmls varchar(8000)
DECLARE @字段名稱 VARCHAR(200)
DECLARE @類型 VARCHAR(200)
DECLARE @長(zhǎng)度 VARCHAR(200)
DECLARE @數(shù)值精度 VARCHAR(200)
DECLARE @小數(shù)位數(shù) VARCHAR(200)
DECLARE @默認(rèn)值 VARCHAR(200)
DECLARE @允許為空 VARCHAR(200)
DECLARE @外鍵 VARCHAR(200)
DECLARE @主鍵 VARCHAR(200)
DECLARE @描述 VARCHAR(200)
SET NOCOUNT ON;
DECLARE Tbls CURSOR
FOR
Select distinct Table_name
FROM INFORMATION_SCHEMA.COLUMNS
order by Table_name
OPEN Tbls
PRINT ''
PRINT ''
PRINT ' '
PRINT ' ......
數(shù)據(jù)字典的組成
數(shù)據(jù)字典的組成:1、數(shù)據(jù)項(xiàng)2、數(shù)據(jù)結(jié)構(gòu)3、數(shù)據(jù)流4、數(shù)據(jù)存儲(chǔ)5、處理過(guò)程數(shù)據(jù)字典數(shù)據(jù)字典是數(shù)據(jù)庫(kù)的重要組成部分。它存放有數(shù)據(jù)庫(kù)所用的有關(guān)信息,對(duì)用戶來(lái)說(shuō)是一組只讀的表。數(shù)據(jù)字典內(nèi)容包括:1、數(shù)據(jù)庫(kù)中所有模式對(duì)象的信息,如表、視圖、簇、及索引等。2、分配多少空間,當(dāng)前使用了多少空間等。3、列的缺省值。4、約束信息的完整性。5、用戶的名字。6、用戶及角色被授予的權(quán)限。7、用戶訪問(wèn)或使用的審計(jì)信息。8、其它產(chǎn)生的數(shù)據(jù)庫(kù)信息。數(shù)據(jù)庫(kù)數(shù)據(jù)字典是一組表和視圖結(jié)構(gòu)。它們存放在SYSTEM表空間中。數(shù)據(jù)庫(kù)數(shù)據(jù)字典不僅是每個(gè)數(shù)據(jù)庫(kù)的中心。而且對(duì)每個(gè)用戶也是非常重要的信息。用戶可以用SQL語(yǔ)句訪問(wèn)數(shù)據(jù)庫(kù)數(shù)據(jù)字典。關(guān)于數(shù)據(jù)的信息 *** ,是一種用戶可以訪問(wèn)的記錄數(shù)據(jù)庫(kù)和應(yīng)用程序元數(shù)據(jù)的目錄,是對(duì)數(shù)據(jù)庫(kù)內(nèi)表信息的物理與邏輯的說(shuō)明
數(shù)據(jù)字典與數(shù)據(jù)庫(kù)設(shè)計(jì)之間有什么關(guān)系?
正文
1 引言
1.1編寫目的
說(shuō)明編寫這份數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書的目的,指出預(yù)期的讀者。
1.2背景
說(shuō)明:
a.說(shuō)明待開發(fā)的數(shù)據(jù)庫(kù)的名稱和使用此數(shù)據(jù)庫(kù)的軟件系統(tǒng)的名稱;
b.列出該軟件系統(tǒng)開發(fā)項(xiàng)目的任務(wù)提出者、用戶以及將安裝該軟件和這個(gè)數(shù)據(jù)庫(kù)的計(jì)算站(中心)。
1.3定義
列出本文件中用到的專門術(shù)語(yǔ)的定義、外文首字母組詞的原詞組。
1.4參考資料
列出有關(guān)的參考資料:
a.本項(xiàng)目的經(jīng)核準(zhǔn)的計(jì)劃任務(wù)書或合同、上級(jí)機(jī)關(guān)批文;
b.屬于本項(xiàng)目的其他已發(fā)表的文件;
c.本文件中各處引用到的文件資料,包括所要用到的軟件開發(fā)標(biāo)準(zhǔn)。
列出這些文件的標(biāo)題、文件編號(hào)、發(fā)表日期和出版單位,說(shuō)明能夠取得這些文件的來(lái)源。
2 外部設(shè)計(jì)
2.1標(biāo)識(shí)符和狀態(tài)
聯(lián)系用途,詳細(xì)說(shuō)明用于唯一地標(biāo)識(shí)該數(shù)據(jù)庫(kù)的代碼、名稱或標(biāo)識(shí)符,附加的描述性信息亦要給出。如果該數(shù)據(jù)庫(kù)屬于尚在實(shí)驗(yàn)中、尚在測(cè)試中或是暫時(shí)使用的,則要說(shuō)明這一特點(diǎn)及其有效時(shí)間范圍。
2.2使用它的程序
列出將要使用或訪問(wèn)此數(shù)據(jù)庫(kù)的所有應(yīng)用程序,對(duì)于這些應(yīng)用程序的每一個(gè),給出它的名稱和版本號(hào)。
2.3約定
陳述一個(gè)程序員或一個(gè)系統(tǒng)分析員為了能使用此數(shù)據(jù)庫(kù)而需要了解的建立標(biāo)號(hào)、標(biāo)識(shí)的約定,例如 用于標(biāo)識(shí)數(shù)據(jù)庫(kù)的不同版本的約定和用于標(biāo)識(shí)庫(kù)內(nèi)各個(gè)文卷、、記錄、數(shù)據(jù)項(xiàng)的命名約定等。
2.4專門指導(dǎo)
向準(zhǔn)備從事此數(shù)據(jù)庫(kù)的生成、從事此數(shù)據(jù)庫(kù)的測(cè)試、維護(hù)人員提供專門的指導(dǎo),例如將被送入數(shù)據(jù) 庫(kù)的數(shù)據(jù)的格式和標(biāo)準(zhǔn)、送入數(shù)據(jù)庫(kù)的操作規(guī)程和步驟,用于產(chǎn)生、修改、更新或使用這些數(shù)據(jù)文卷的操 作指導(dǎo)。 如果這些指導(dǎo)的內(nèi)容篇幅很長(zhǎng),列出可參閱的文件資料的名稱和章條。
2.5支持軟件
簡(jiǎn)單介紹同此數(shù)據(jù)庫(kù)直接有關(guān)的支持軟件,如數(shù)據(jù)庫(kù)管理系統(tǒng)、存儲(chǔ)定位程序和用于裝入、生成、修 改、更新數(shù)據(jù)庫(kù)的程序等。說(shuō)明這些軟件的名稱、版本號(hào)和主要功能特性,如所用數(shù)據(jù)模型的類型、允許 的數(shù)據(jù)容量等。列出這些支持軟件的技術(shù)文件的標(biāo)題、編號(hào)及來(lái)源。
3 結(jié)構(gòu)設(shè)計(jì)
3.1概念結(jié)構(gòu)設(shè)計(jì)
說(shuō)明本數(shù)據(jù)庫(kù)將反映的現(xiàn)實(shí)世界中的實(shí)體、屬性和它們之間的關(guān)系等的原始數(shù)據(jù)形式,包括各數(shù)據(jù)項(xiàng)、記錄、系、文卷的標(biāo)識(shí)符、定義、類型、度量單位和值域,建立本數(shù)據(jù)庫(kù)的每一幅用戶視圖。
3.2邏輯結(jié)構(gòu)設(shè)計(jì)
說(shuō)明把上述原始數(shù)據(jù)進(jìn)行分解、合并后重新組織起來(lái)的數(shù)據(jù)庫(kù)全局邏輯結(jié)構(gòu),包括所確定的關(guān)鍵字和屬性、重新確定的記錄結(jié)構(gòu)和文卷結(jié)構(gòu)、所建立的各個(gè)文卷之間的相互關(guān)系,形成本數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理員視圖。
3.3物理結(jié)構(gòu)設(shè)計(jì)
建立系統(tǒng)程序員視圖,包括:
a.?dāng)?shù)據(jù)在內(nèi)存中的安排,包括對(duì)索引區(qū)、緩沖區(qū)的設(shè)計(jì);
b.所使用的外存設(shè)備及外存空間的組織,包括索引區(qū)、數(shù)據(jù)塊的組織與劃分;
c.訪問(wèn)數(shù)據(jù)的方式方法。
4 運(yùn)用設(shè)計(jì)
4.1數(shù)據(jù)字典設(shè)計(jì)
對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)中涉及到的各種項(xiàng)目,如數(shù)據(jù)項(xiàng)、記錄、系、文卷、模式、子模式等一般要建立起數(shù)據(jù)字典,以說(shuō)明它們的標(biāo)識(shí)符、同義名及有關(guān)信息。在本節(jié)中要說(shuō)明對(duì)此數(shù)據(jù)字典設(shè)計(jì)的基本考慮。
4.2安全保密設(shè)計(jì)
說(shuō)明在數(shù)據(jù)庫(kù)的設(shè)計(jì)中,將如何通過(guò)區(qū)分不同的訪問(wèn)者、不同的訪問(wèn)類型和不同的數(shù)據(jù)對(duì)象,進(jìn)行分別對(duì)待而獲得的數(shù)據(jù)庫(kù)安全保密的設(shè)計(jì)考慮。...
mysql數(shù)據(jù)庫(kù)數(shù)據(jù)字典表怎么寫
你導(dǎo)出 rmation_schema 數(shù)據(jù)庫(kù)里的所有表就OK了 新特性啊,以前只有ORACLE才有的
數(shù)據(jù)字典包括哪些內(nèi)容
你好!
我用的是考研參考書,上面的答案是:
數(shù)據(jù)字典是數(shù)據(jù)庫(kù)中描述信息和控制信息的 *** ,他是數(shù)據(jù)庫(kù)設(shè)計(jì)和管理的有力工具。數(shù)據(jù)字典包含(1.數(shù)據(jù)項(xiàng),2數(shù)據(jù)流,3.數(shù)據(jù)結(jié)構(gòu).4.數(shù)據(jù)存儲(chǔ).5.處理過(guò)程)五個(gè)部分。同時(shí)也是詳細(xì)數(shù)據(jù)收集和數(shù)據(jù)分析的結(jié)果。
SQL怎么創(chuàng)建數(shù)據(jù)字典表,最好舉個(gè)例子!
我的理解數(shù)據(jù)字典表就是普通的表,例如性別的數(shù)據(jù)字典表
而這個(gè)字典表即可以包含, xmdm(代碼),xmmc(名稱),xm *** (說(shuō)明) 三列,可根據(jù)使用情況增加或減少列,里面的數(shù)據(jù),即包含了 男,女,未知,三個(gè)選擇 這男,女等就是字典
是可以列舉完全的。
數(shù)據(jù)庫(kù)中的字典是什么意思?
數(shù)據(jù)字典即為數(shù)據(jù)庫(kù)說(shuō)明。包含完整的表結(jié)構(gòu)介紹。
數(shù)據(jù)字典是特殊的數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)類型是按什么
數(shù)據(jù)庫(kù)設(shè)計(jì)方法、規(guī)范與技巧
一、數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程
數(shù)據(jù)庫(kù)技術(shù)是信息資源管理最有效的手段。數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),有效存儲(chǔ)數(shù)據(jù),滿足用戶信息要求和處理要求。
數(shù)據(jù)庫(kù)設(shè)計(jì)中需求分析階段綜合各個(gè)用戶的應(yīng)用需求(現(xiàn)實(shí)世界的需求),在概念設(shè)計(jì)階段形成獨(dú)立于機(jī)器特點(diǎn)、獨(dú)立于各個(gè)DBMS產(chǎn)品的概念模式(信息世界模型),用E-R圖來(lái)描述。在邏輯設(shè)計(jì)階段將E-R圖轉(zhuǎn)換成具體的數(shù)據(jù)庫(kù)產(chǎn)品支持的數(shù)據(jù)模型如關(guān)系模型,形成數(shù)據(jù)庫(kù)邏輯模式。然后根據(jù)用戶處理的要求,安全性的考慮,在基本表的基礎(chǔ)上再建立必要的視圖(VIEW)形成數(shù)據(jù)的外模式。在物理設(shè)計(jì)階段根據(jù)DBMS特點(diǎn)和處理的需要,進(jìn)行物理存儲(chǔ)安排,設(shè)計(jì)索引,形成數(shù)據(jù)庫(kù)內(nèi)模式。
1. 需求分析階段
需求收集和分析,結(jié)果得到數(shù)據(jù)字典描述的數(shù)據(jù)需求(和數(shù)據(jù)流圖描述的處理需求)。
需求分析的重點(diǎn)是調(diào)查、收集與分析用戶在數(shù)據(jù)管理中的信息要求、處理要求、安全性與完整性要求。
需求分析的方法:調(diào)查組織機(jī)構(gòu)情況、調(diào)查各部門的業(yè)務(wù)活動(dòng)情況、協(xié)助用戶明確對(duì)新系統(tǒng)的各種要求、確定新系統(tǒng)的邊界。
常用的調(diào)查方法有: 跟班作業(yè)、開調(diào)查會(huì)、請(qǐng)專人介紹、詢問(wèn)、設(shè)計(jì)調(diào)查表請(qǐng)用戶填寫、查閱記錄。
分析和表達(dá)用戶需求的方法主要包括自頂向下和自底向上兩類方法。自頂向下的結(jié)構(gòu)化分析方法(Structured Analysis,簡(jiǎn)稱SA方法)從最上層的系統(tǒng)組織機(jī)構(gòu)入手,采用逐層分解的方式分析系統(tǒng),并把每一層用數(shù)據(jù)流圖和數(shù)據(jù)字典描述。
數(shù)據(jù)流圖表達(dá)了數(shù)據(jù)和處理過(guò)程的關(guān)系。系統(tǒng)中的數(shù)據(jù)則借助數(shù)據(jù)字典(Data Dictionary,簡(jiǎn)稱DD)來(lái)描述。
數(shù)據(jù)字典是各類數(shù)據(jù)描述的 *** ,它是關(guān)于數(shù)據(jù)庫(kù)中數(shù)據(jù)的描述,即元數(shù)據(jù),而不是數(shù)據(jù)本身。數(shù)據(jù)字典通常包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)和處理過(guò)程五個(gè)部分(至少應(yīng)該包含每個(gè)字段的數(shù)據(jù)類型和在每個(gè)表內(nèi)的主外鍵)。
數(shù)據(jù)項(xiàng)描述={數(shù)據(jù)項(xiàng)名,數(shù)據(jù)項(xiàng)含義說(shuō)明,別名,數(shù)據(jù)類型,長(zhǎng)度,
取值范圍,取值含義,與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系}
數(shù)據(jù)結(jié)構(gòu)描述={數(shù)據(jù)結(jié)構(gòu)名,含義說(shuō)明,組成:{數(shù)據(jù)項(xiàng)或數(shù)據(jù)結(jié)構(gòu)}}
數(shù)據(jù)流描述={數(shù)據(jù)流名,說(shuō)明,數(shù)據(jù)流來(lái)源,數(shù)據(jù)流去向,
組成:{數(shù)據(jù)結(jié)構(gòu)},平均流量,高峰期流量}
數(shù)據(jù)存儲(chǔ)描述={數(shù)據(jù)存儲(chǔ)名,說(shuō)明,編號(hào),流入的數(shù)據(jù)流,流出的數(shù)據(jù)流,
組成:{數(shù)據(jù)結(jié)構(gòu)},數(shù)據(jù)量,存取方式}
處理過(guò)程描述={處理過(guò)程名,說(shuō)明,輸入:{數(shù)據(jù)流},輸出:{數(shù)據(jù)流},
處理:{簡(jiǎn)要說(shuō)明}}
2. 概念結(jié)構(gòu)設(shè)計(jì)階段
通過(guò)對(duì)用戶需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的概念模型,可以用E-R圖表示。
概念模型用于信息世界的建模。概念模型不依賴于某一個(gè)DBMS支持的數(shù)據(jù)模型。概念模型可以轉(zhuǎn)換為計(jì)算機(jī)上某一DBMS支持的特定數(shù)據(jù)模型。
概念模型特點(diǎn):
(1) 具有較強(qiáng)的語(yǔ)義表達(dá)能力,能夠方便、直接地表達(dá)應(yīng)用中的各種語(yǔ)義知識(shí)。
(2) 應(yīng)該簡(jiǎn)單、清晰、易于用戶理解,是用戶與數(shù)據(jù)庫(kù)設(shè)計(jì)人員之間進(jìn)行交流的語(yǔ)言。
概念模型設(shè)計(jì)的一種常用方法為IDEF1X方法,它就是把實(shí)體-聯(lián)系方法應(yīng)用到語(yǔ)義數(shù)據(jù)模型中的一種語(yǔ)義模型化技術(shù),用于建立系統(tǒng)信息模型。
使用IDEF1X方法創(chuàng)建E-R模型的步驟如下所示:
2.1 第零步——初始化工程
這個(gè)階段的任務(wù)是從目的描述和范圍描述開始,確定建模目標(biāo),開發(fā)建模計(jì)劃,組織建模......
求一PHP算法,字典生成。時(shí)間一到再加100分。如:字符:0-9,長(zhǎng)度:1,
那就生成0,1,2,3,4,5,6,7,8,9
長(zhǎng)度:2,就會(huì)生成00-99
現(xiàn)在要求字符可以包括a-z,或者其他特殊符號(hào),求一高效的生成算法。
參考答案一
function get_string($strlen){
$source='0123456789'; //任意字符
$len = strlen($source); //長(zhǎng)度
$return = array();
for($i = 0 ;$i $len;$i++){
for($j = 0;$j $strlen;$j++){
$return[$i] .= $i;
}
}
return implode(',', $return);
}
如果輸入長(zhǎng)度2: 輸出結(jié)果就是:
00,11,22,33,44,55,66,77,88,99
參考答案二
優(yōu)化了進(jìn)位算法:
PHP code =0;$no--){ $word=$source{$series[$no]}.$word; $series[$no]+=$tonext_value; if($no0){ if($series[$no]==$len){ $series[$no]=0; $tonext_value=1; }else{ $tonext_value=0; } } } echo "$word "; } } gene_dic(2); ?
簡(jiǎn)單的說(shuō),我會(huì)把這個(gè)理解為0-9(十進(jìn)制)下十個(gè)數(shù)字生成兩位數(shù)字、可重復(fù)的排列問(wèn)題。
排列算法我自己建立過(guò)的就是簡(jiǎn)單的N進(jìn)制下的+1算法,保證可以遍歷。
即:
初始化到0,
1. +1
2. 是否超過(guò)要生成的位數(shù)?否,則回到1;
3. 輸出
參考答案三
PHP code =0;$no--){//循環(huán)遍歷數(shù)組每次從源字串中取一個(gè)字符,為便于進(jìn)位運(yùn)算,取字符是從后往前取 $word=$source{$series[$no]}.$word;//先取出一個(gè)字符 //取出一個(gè)字符后就要判斷當(dāng)前數(shù)組元素如何如果改變值,為下一次“大循環(huán)”做準(zhǔn)備 if($no==$n-1){//末位的判斷,它比較特殊,每次大循環(huán)都要增值 if($series[$no]==$len-1){ $series[$no]=0; $tonext_value=1;//歸零時(shí)就進(jìn)位 }else{ $series[$no]+=1; $tonext_value=0;//未歸零就增值,不進(jìn)位 } }elseif($no$n-1){//中間位的進(jìn)位判斷 $series[$no]+=$tonext_value;//先取得上一位的進(jìn)位值 if($series[$no]==$len){ $series[$no]=0; $tonext_value=1;//歸零了就繼續(xù)進(jìn)位 }else{ $tonext_value=0;//不歸零就不進(jìn)位 } }else{ $series[$no]+=$tonext_value;//大循環(huán)次數(shù)決定了“老大”是只進(jìn)不出的。 } } echo "$word ";//輸入單詞 } } gene_dic(2);//測(cè)試,結(jié)果OK。
參考答案四
PHP code =0;$no--){//循環(huán)遍歷數(shù)組每次從源字串中取一個(gè)字符,為便于進(jìn)位運(yùn)算,取字符是從后往前取 $word=$source{$series[$no]}.$word;//先取出一個(gè)字符 //取出一個(gè)字符后就要判斷當(dāng)前數(shù)組元素如何如果改變值,為下一次“大循環(huán)”做準(zhǔn)備 if($no==$n-1){//末位的判斷,它比較特殊,每次大循環(huán)都要增值 if($series[$no]==$len-1){ $series[$no]=0; $tonext_value=1;//歸零時(shí)就進(jìn)位 }else{ $series[$no]+=1; $tonext_value=0;//未歸零就增值,不進(jìn)位 } }elseif($no$n-1){//中間位的進(jìn)位判斷 $series[$no]+=$tonext_value;//先取得上一位的進(jìn)位值 if($series[$no]==$len){ $series[$no]=0; $tonext_value=1;//歸零了就繼續(xù)進(jìn)位 }else{ $tonext_value=0;//不歸零就不進(jìn)位 } }else{ $series[$no]+=$tonext_value;//大循環(huán)次數(shù)決定了“老大”是只進(jìn)不出的。 } } echo "$word ";//輸入單詞 } } gene_dic(2);//測(cè)試,結(jié)果OK。
參考答案五
應(yīng)該是:
function get_string($strlen){
$source='0123456789';
$len = strlen($source);
$return = array();
for($i = 0 ;$i $len;$i++){
for($j = 1;$j = $strlen;$j++){
$return[$i] .= substr($source,$i,1);
}
}
return implode(',', $return);
}
【拓展閱讀】如何開始一門語(yǔ)言的學(xué)習(xí)
一門語(yǔ)言從發(fā)明到演進(jìn)必有原因。
現(xiàn)在還有很多人推薦學(xué)習(xí)不同的語(yǔ)言。通過(guò)比較,了解它的發(fā)展史,
創(chuàng)始人的初心等因素都需要留意。多個(gè)思考,這個(gè)語(yǔ)言在5年,在10年后還是否保持活力?
當(dāng)有幾個(gè)類似的語(yǔ)言被選擇時(shí),我們不妨對(duì)它們做一個(gè)Swat分析。
列出這些語(yǔ)言的共同點(diǎn),還有它們之間的規(guī)則差異。
了解語(yǔ)言的發(fā)展史
開發(fā)語(yǔ)言從匯編開始,如最早的計(jì)算機(jī)ENIAC,使用的就是它來(lái)編程。
再到Fortarin,再到C語(yǔ)言,Cobol,Basic。每一個(gè)語(yǔ)言都與當(dāng)時(shí)發(fā)展的階段有點(diǎn)密切關(guān)聯(lián)。
人類的每個(gè)發(fā)明都與懶惰有關(guān),語(yǔ)言也是為便捷性而生。有的語(yǔ)言
C是除匯編外最重視效率的語(yǔ)言,擴(kuò)展的C++也繼承了此特性。Perl是做文本處理效率最佳的語(yǔ)言,雖然它的發(fā)展有點(diǎn)慢。PHP做Web開發(fā),是“世界上最好的.語(yǔ)言”,Python的閱讀性和大數(shù)據(jù)處理都做得樣樣俱佳。
當(dāng)了解語(yǔ)言的歷史沿革后,會(huì)讓我們對(duì)其創(chuàng)始人有很強(qiáng)烈的興趣,成為忠實(shí)的腦殘粉,學(xué)習(xí)該語(yǔ)言的興趣會(huì)更濃烈。
人們常常說(shuō)某個(gè)語(yǔ)言比哪個(gè)好,這其實(shí)沒(méi)有必要。不必要為其它人的語(yǔ)言所惑,需要你自己做出選擇。
語(yǔ)言的共通點(diǎn)
這個(gè)星球的人都是一個(gè)鼻子兩雙只水汪汪的大眼睛,與人們的模樣一般,編程語(yǔ)言也有一個(gè)大致相同的長(zhǎng)相。
語(yǔ)法:這是開發(fā)此語(yǔ)言定義的規(guī)則“套路”:
運(yùn)算符順序,變量常量定義/作用域,表達(dá)式定義,字符串定義,行尾結(jié)束符等。
流程控制:循環(huán)控制
這些語(yǔ)法都是成對(duì)的,如if,for,while,foreach,有的語(yǔ)言還提供goto這樣類似匯編語(yǔ)言的語(yǔ)法。
函數(shù)與方法
一些能夠復(fù)用的高質(zhì)量代碼組合。函數(shù)執(zhí)行后有返回,有遞歸,有嵌套,還有干完活就完事的簡(jiǎn)單任務(wù)。有靜態(tài)函數(shù)和動(dòng)態(tài)函數(shù)區(qū)分。
容器
數(shù)組,哈希表(也叫散列),字典等用來(lái)保存數(shù)據(jù)的容器。
錯(cuò)誤/例外處理
現(xiàn)代編程語(yǔ)言基本都支持出錯(cuò)的拋出,除了C語(yǔ)言之外。
比如硬盤不足,網(wǎng)絡(luò)出錯(cuò),黑客攻擊等情形。就像購(gòu)物中心里出現(xiàn)煤氣泄露時(shí),監(jiān)測(cè)設(shè)備,物聯(lián)網(wǎng)設(shè)備能夠及時(shí)記錄與傳遞給指揮中心。
沒(méi)有錯(cuò)誤拋出的語(yǔ)言,需要自己考慮盡可能出錯(cuò)的場(chǎng)景并處理,比如:
if(is_overfllow)
//處理
if(network_error)
//處理
可以還有不少需要關(guān)注的維度,這會(huì)讓代碼變得艱澀難懂,也難以維護(hù)。
我們可以用這樣的方式,讓其更簡(jiǎn)潔:
on error goto ERROR
ERROR:
..//
但這總是會(huì)需要我們照顧很多情形。于是C++推出了一個(gè)語(yǔ)法:
try{
//可能會(huì)出錯(cuò)的代碼
//可能會(huì)出錯(cuò)的代碼
}catch{
//處理出錯(cuò)的邏輯
//處理出錯(cuò)的邏輯
}finally{
//出不出錯(cuò)都要執(zhí)行的代碼
}
最后一句是微軟公司給業(yè)界提供貢獻(xiàn)的finally代碼塊。
以上這些成為語(yǔ)言處理異常機(jī)制的基礎(chǔ)。
容器
容器是很重要的一節(jié),所以我們單獨(dú)再提出來(lái)。很多邏輯處理,使用容器保存數(shù)據(jù),該語(yǔ)言會(huì)提供便捷的方法來(lái)提供存取。
比如C、Perl、PHP、Ruby中均提供的數(shù)組和關(guān)聯(lián)數(shù)組,LISP提供的列表,Java、Python提供的元組、鏈表等。
雖然名字相同,但是實(shí)現(xiàn)方式卻是完全不同,使用方法當(dāng)然也不一樣。
沒(méi)有萬(wàn)能的容器,只有最合適的??梢詮墓?jié)省內(nèi)存,節(jié)約時(shí)間還是編碼效率等綜合考慮。
字符串與字符編碼
是否支持unicode編碼。從摩斯碼到ASCII到統(tǒng)一的Unicode編碼支持。
并發(fā)處理
有的語(yǔ)言在設(shè)計(jì)時(shí)并無(wú)此方面的考慮,或者天生設(shè)計(jì)存在缺陷。
即多線程,多進(jìn)程的概念。包括共享,鎖,事備等特性。
面向?qū)ο?/p>
支持類,繼承,模塊,包,命名空間,閉包等。有這些特性才會(huì)讓人們的工作變得更便利、更有效率。
小結(jié)
學(xué)習(xí)一門語(yǔ)言的關(guān)鍵,需要我們?cè)谄届o地心緒下,帶著濃厚的興趣去學(xué)習(xí),在比較中學(xué)習(xí),在歷史中學(xué)習(xí)。
有時(shí)候感覺(jué)還是不夠通暢,先做知識(shí)的搬運(yùn)工也是不錯(cuò)。另外,不斷的實(shí)踐會(huì)讓我們的信心更足。