⑴ php 任意組合求合
$arr=array(1,2,3,4,5,6,7,8,9);
functionisten($arr){
if(!is_array($arr)){thrownewException("傳入的必須是數組");}
$len=count($arr);
$count=mt_rand(1,$len);
$num=0;
$tem=array();
for($i=0;$i<$count;++$i){
$n=mt_rand(0,$len-1);
$num+=$arr[$n];
$tem[]=$arr[$n];
}
$re=array(
'num'=>$num,
'tem'=>$tem,
);
return$re;
}
/*//要了解具體的執行過程,可以用這段代碼
$times=0;
$plus=0;
while($plus!=10){
$re=isten($arr);
$times++;
echo"嘗試次數:".$times,",";
echo"隨機抽取".count($re['tem']).'個元素:';
$str="";
foreach($re['tem']as$v){
$str.=$v."+";
}
$str=substr($str,0,strlen($str)-1);
echo$str;
echo'='.$re['num'],"<br>";
$plus=$re['num'];
}*/
//每次要獲取銷攔結果為10時,所需要嘗試的資料
functionget_times($arr){
$times=0;
while(true){
$re=isten($arr);
$num=$re['num'];
$times++;
租帆if($num==10){
return$times;break;
}
}
}
//echoget_times($arr);
//計算平均需要嘗試的次數:
$t=0;
for($i=0;$i<100000;++$i){
$t+=get_times($arr);
}
echo"平均需要嘗試的次數是:".$t/100000;
//結弊斗雹論:通過100000次的計算,得出的平均嘗試次數是51-52次之間。
⑵ get傳值字元串轉化為數組 php
可以鍵派用parse_str這個函寬亮槐數,
$re = 'a=1&b=2&c=3';
parse_str($re, $output);
var_mp($output);
結果:array(3) { ["a"]=> string(1) "1" ["b"]=>慎友 string(1) "2" ["c"]=> string(1) "3" }
⑶ php 用print_r($_GET)查看數組發現名稱後面多了個下劃線_
location.href = '?action = delete';
把空格刪了試試
⑷ 如何運用PHP函數array
PHP Array函數是PHP 核心的組成部分。無需安裝即可使用這些函數。
array()
創建數組。
array_change_key_case()
返回其鍵均為大寫或小寫的數組。
array_chunk()
把一個數組分割為新的數組塊。
array_column()
返回輸入數組中某個單一列的值。
array_combine()
通過合並兩個數組(一個為鍵名數組,一個為鍵值數組)來創建一個新數組。
array_count_values()
用於統計數組中所有值出現的次數。
array_diff()
比較數組,返回兩個數組的差集(只比較鍵值)。
array_diff_assoc()
比較數組,返回兩個數組的差集(比較鍵名和鍵值)。
array_diff_key()
比較數組,返回兩個數組的差集(只比較鍵名)。
array_diff_uassoc()
比較數組,返回兩個數組的差集(比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)。
array_diff_ukey()
比較數組,返回兩個數組的差集(只比較鍵名,使用用戶自定義的鍵名比較函數)。
array_fill()
用給定的鍵值填充數組。
array_fill_keys()
用給定的指定鍵名的鍵值填充數組。
array_filter()
用回調函數過濾數組中的元素。
array_flip()
反轉/交換數組中的鍵名和對應關聯的鍵值。
array_intersect()
比較數組,返回兩個數組的交集(只比較鍵值)。
array_intersect_assoc()
比較數組,返回兩個數組的交集(比較鍵名和鍵值)。
array_intersect_key()
比較數組,返回兩個數組的交集(只比較鍵名)。
array_intersect_uassoc()
比較數組,返回兩個數組的交集(比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)。
array_intersect_ukey()
比較數組,返回兩個數組的交集(只比較鍵名,使用用戶自定義的鍵名比較函數)。
array_key_exists()
檢查指定的鍵名是否存在於數組中。
array_keys()
返回數組中所有的鍵名。
array_map()
將用戶自定義函數作用到給定數組的每個值上,返回新的值。
array_merge()
把一個或多個數組合並為一個數組。
array_merge_recursive()
遞歸地把一個或多個數組合並為一個數組。
array_multisort()
對多個數組或多維數組進行排序。
array_pad()
將指定數量的帶有指定值的元素插入到數組中。
array_pop()
刪除數組中的最後一個元素(出棧)。
array_proct()
計算數組中所有值的乘積。
array_push()
將一個或多個元素插入數組的末尾(入棧)。
array_rand()
從數組中隨機選出一個或多個元素,返回鍵名。
array_rece()
通過使用用戶自定義函數,迭代地將數組簡化為一個字元串,並返回。
array_replace()
將所有被替換數組中的元素替換成第一個數組。
array_replace_recursive()
將所有被替換數組中的元素遞歸地替換成第一個數組。
array_reverse()
將原數組中的元素順序翻轉,創建新的數組並返回。
array_search()
在數組中搜索給定的值,如果成功則返回相應的鍵名。
array_shift()
刪除數組中的第一個元素,並返回被刪除元素的值。
array_slice()
返回數組中的選定部分。
array_splice()
把數組中的指定元素去掉並用其它值取代。
array_sum()
返回數組中所有值的和。
array_udiff()
比較數組,返回兩個數組的差集(只比較鍵值,使用一個用戶自定義的鍵名比較函數)。
array_udiff_assoc()
比較數組,返回兩個數組的差集(比較鍵名和鍵值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)。
array_udiff_uassoc()
比較數組,返回兩個數組的差集(比較鍵名和鍵值,使用兩個用戶自定義的鍵名比較函數)。
array_uintersect()
比較數組,返回兩個數組的交集(只比較鍵值,使用一個用戶自定義的鍵名比較函數)。
array_uintersect_assoc()
比較數組,返回兩個數組的交集(比較鍵名和鍵值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)。
array_uintersect_uassoc()
比較數組,返回兩個數組的交集(比較鍵名和鍵值,使用兩個用戶自定義的鍵名比較函數)。
array_unique()
刪除數組中重復的值。
array_unshift()
在數組開頭插入一個或多個元素。
array_values()
返回數組中所有的值。
array_walk()
對數組中的每個成員應用用戶函數。
array_walk_recursive()
對數組中的每個成員遞歸地應用用戶函數。
arsort()
對關聯數組按照鍵值進行降序排序。
asort()
對關聯數組按照鍵值進行升序排序。
compact()
創建一個包含變數名和它們的值的數組。
count()
返回數組中元素的數目。
current()
返回數組中的當前元素。
each()
返回數組中當前的鍵/值對。
end()
將數組的內部指針指向最後一個元素。
extract()
從數組中將變數導入到當前的符號表。
in_array()
檢查數組中是否存在指定的值。
key()
從關聯數組中取得鍵名。
krsort()
對關聯數組按照鍵名降序排序。
ksort()
對關聯數組按照鍵名升序排序。
list()
把數組中的值賦給一些數組變數。
natcasesort()
用"自然排序"演算法對數組進行不區分大小寫字母的排序。
natsort()
用"自然排序"演算法對數組排序。
next()
將數組中的內部指針向前移動一位。
pos()
current() 的別名。
prev()
將數組的內部指針倒回一位。
range()
創建一個包含指定范圍的元素的數組。
reset()
將數組的內部指針指向第一個元素。
rsort()
對數值數組進行降序排序。
shuffle()
把數組中的元素按隨機順序重新排列。
sizeof()
count() 的別名。
sort()
對數值數組進行升序排序。
uasort()
使用用戶自定義的比較函數對數組中的鍵值進行排序。
uksort()
使用用戶自定義的比較函數對數組中的鍵名進行排序。
usort()
使用用戶自定義的比較函數對數組進行排序。
Array(arglist)
作用: 創建數組並給數組賦值
arglist 參數是賦給包含在 Variant 中的數組元素的值的列表(用逗號分隔)。如果沒有指定此參數,則將會創建零長度的數組。
例:一般創建數組的方法為
Dim AA(2)
AA(0)=10
AA(1)=20
AA(2)=30
MsgBox AA(2)
如果像以上的話比較繁瑣那麼如果用array函數呢?
Dim AA
AA=Array(10,20,30)
B=AA(2)
MsgBox B
這樣的話過程就比較簡單用的時候拿出來就行了。
static Object get(Object array, int index)
返回指定數組對象中索引組件的值。
static boolean getBoolean(Object array, int index)
以 boolean 形式返回指定數組對象中索引組件的值。
static byte getByte(Object array, int index)
以 byte 形式返回指定數組對象中索引組件的值。
static char getChar(Object array, int index)
以 char 形式返回指定數組對象中索引組件的值。
static double getDouble(Object array, int index)
以 double 形式返回指定數組對象中索引組件的值。
static float getFloat(Object array, int index)
以 float 形式返回指定數組對象中索引組件的值。
static int getInt(Object array, int index)
以 int 形式返回指定數組對象中索引組件的值。
static int getLength(Object array)
以 int 形式返回指定數組對象的長度。
static long getLong(Object array, int index)
以 long 形式返回指定數組對象中索引組件的值。
static short getShort(Object array, int index)
以 short 形式返回指定數組對象中索引組件的值。
static Object newInstance(Class<?> componentType, int length)
創建一個具有指定的組件類型和長度的新數組。
static Object newInstance(Class<?> componentType, int[] dimensions)
創建一個具有指定的組件類型和維度的新數組。
static void set(Object array, int index, Object value)
將指定數組對象中索引組件的值設置為指定的新值。
static void setBoolean(Object array, int index, boolean z)
將指定數組對象中索引組件的值設置為指定的 boolean 值。
static void setByte(Object array, int index, byte b)
Array 對象用於在單個的變數中存儲多個值。
參數
參數size是期望的數組元素個數。返回的數組,length 欄位將被設為size的值。
參數element...,elementn是參數列表。當使用這些參數來調用構造函數 Array() 時,新創建的數組的元素就會被初始化為這些值。它的 length 欄位也會被設置為參數的個數。
返回值
返回新創建並被初始化了的數組。
如果調用構造函數 Array() 時沒有使用參數,那麼返回的數組為空,length 欄位為 0。
當調用構造函數時只傳遞給它一個數字參數,該構造函數將返回具有指定個數、元素為 undefined 的數組。
當其他參數調用 Array() 時,該構造函數將用參數指定的值初始化數組。
當把構造函數作為函數調用,不使用 new 運算符時,它的行為與使用 new 運算符調用它時的行為完全一樣。
⑸ php數組,有什麼辦法獲取下一個元素的鍵值
方法一:用循環
function getNext(&$array, $curr_key)
{
$next = 0;
reset($array);
do
{
$tmp_key = key($array);
$res = next($array);
} while ( ($tmp_key != $curr_key) && $res );
if( $res )
{
$next = key($array);
}
return $next;
}
function getPrev(&$array, $curr_key)
{
end($array);
$prev = key($array);
do
{
$tmp_key = key($array);
$res = prev($array);
} while ( ($tmp_key != $curr_key) && $res );
if( $res )
{
$prev = key($array);
}
return $prev;
}
方法二:用Iterator,不過要先得到position
// 默認查找鍵為key元素的後一個元素
function get_element($key, $arr, $who='next')
{
//查找鍵為$key元素的位置
$offset = array_search($key, array_keys($arr));
if(FALSE == $offset || NULL == $offset) { return ;}
//查找哪個元素,前一個或後一個?
if ('prev' == $who) {
$arr = array_reverse($arr);
} else if ('next' == $who) {
} else {
throw new Exception("錯誤的參數");
}
對許多方法 都可以在後盾裡面找到 而且很詳細 很容易理解
⑹ PHP 中如何用 GET/POST 方式分別傳遞與接收一個數組
<formaction="index.php"method="post"><!--get方法也是可以的--!>
<inputtype="checkbox"name="chk[]"value="1">第一個
<inputtype="checkbox"name="chk[]"value="2">第二個
<inputtype="checkbox"name="chk[]"value="3">第三個
<inputtype="submit"name="submit"value="提交">
</form>
主要name屬性的值,chk[]是一個數組的形式
php代碼:
$_POST['chk'];//獲取的是一個選中的復選框的值組成的數組,遍歷這個數組就可以得到每個值
可以參考一下
⑺ PHP從數組中取出多個數值。
$arr = array(1,2,3,4,5,6,7,8,9,10);
$myWant = array();
for($i=0;$i<3;$i++)
{
$len = sizeof($arr);
$j = rand(0,$len-1);
$myWant[] = $arr[$j];
if($j==$len-1)
unset($arr[$len-1]);
else
{
$arr[$j] = $arr[$len-1];
unset($arr[$len-1]);
}
}
print_r($myWant);
PHP手冊里根本沒有array_rand函數
⑻ PHP遍歷數組的方法匯總
今天有個朋友問我一個問題php遍歷數組的方法,告訴她了幾個。順便寫個文螞源章總結下,如果總結不全還請朋友們指出
第一、foreach()
foreach()是一個用來遍歷數組中數據的最簡單有效的方法。
<?php
$urls=
array('aaa','bbb','ccc','ddd');
foreach
($urls
as
$url){
echo
"This
Site
url
is
$url!
<br
/>";
}
?>
顯示結果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
第二、while()
和
list(),each()配合使用。
<?php
$urls=
array('aaa','bbb','ccc','ddd');
while(list($key,$val)=
each($urls))
{
echo
"This
Site
url
is
$val.<br
/>";
}
?>
顯示結果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
第三、for()運用for遍歷數組
<?php
$urls=
array('aaa','bbb','ccc','ddd');
for
($i=
0;$i<
count($urls);
$i++){
$str=
$urls[$i];
echo
"This
Site
url
is
$str.<br
/>";
}
?>
顯示結果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
有時候有人也在問這幾種遍歷數組的方法哪個更快捷些呢,下面做個簡單的測試就明白了
===========
下面來測試三種遍歷數組的速度
===========
一般情況下,遍歷蠢首一個數組有三種方法,for、while、foreach。其中最簡單方便的是foreach。下面先讓我們來測試一下共同遍歷一個有50000個下標的一維數組所耗的時間。
<?php
$arr=
array();
for($i=
0;
$i<
50000;
$i++){
$arr[]=
$i*rand(1000,9999);
}
function
GetRunTime()
{
list($usec,$sec)=explode("
",microtime());
return
((float)$usec+(float)$sec);
}
######################################
$time_start=
GetRunTime();
for($i=
0;
$i<
count($arr);
$i++){
$str=
$arr[$i];
}
$time_end=
GetRunTime();
$time_used=
$time_end-
$time_start;
echo
'Used
time
of
for:'.round($time_used,
7).'(s)<br
/><br
/>';
unset($str,
$time_start,
$time_end,
$time_used);
######################################
$time_start=
GetRunTime();
while(list($key,
$val)=
each($arr)){
$str=
$val;
}
$time_end=
GetRunTime();
$time_used=
$time_end-
$time_start;
echo
'Used
time
of
while:'.round($time_used,
7).'(s)<br
/><br
/>';
unset($str,
$key,
$val,
$time_start,
$time_end,
$time_used);
######################################
$time_start=
GetRunTime();
foreach($arr
as$key=>
$val){
$str=
$val;
}
$time_end=
GetRunTime();
$time_used=
$time_end-
$time_start;
echo
'Used
time
of
foreach:'.round($time_used,
7).'(s)<br
/><br
/>';
?>
測試結果:
Used
time
of
for:0.0228429(s)
Used
time
of
while:0.0544658(s)
Used
time
of
foreach:0.0085628(s)
經過帶物數反復多次測試,結果表明,對於遍歷同樣一個數組,foreach速度最快,最慢的則是while。從原理上來看,foreach是對數組副本進行操作(通過拷貝數組),而while則通過移動數組內部指標進行操作,一般邏輯下認為,while應該比foreach快(因為foreach在開始執行的時候首先把數組復制進去,而while直接移動內部指標。),但結果剛剛相反。原因應該是,foreach是PHP內部實現,而while是通用的循環結構。所以,在通常應用中foreach簡單,而且效率高。在PHP5下,foreach還可以遍歷類的屬性。
以上所述就是本文的全部內容了,希望大家能夠喜歡。