A. php重置數組為連續數字索引的幾種方式
PHP重置數組為連續數字索引的幾種方式
比如這樣的一個php數組:
[php]view plain
$arr=array(
1=>'apple',
3=>'banana',
5=>'orange'
);
想要轉換為這樣的數組:
[php]view plain
$arr=array(
0=>'apple',
1=>'banana',
2=>'orange'
);
1、推薦的方式 array_values 方法
這樣方式無論對普通數組還是關聯數組都適用
[php]view plain
<?php
$arr=array(
1=>'apple',
3=>'banana',
5=>'orange'
);
print_r(array_values($arr));
$arr1=array(
'name'=>'jerry',
'age'=>16,
'height'=>'18cm'
);
print_r(array_values($arr1));
輸出結果:
[sql]view plain
[root@localhostphp]#phparray.php
Array
(
[0]=>apple
[1]=>banana
[2]=>orange
)
Array
(
[0]=>jerry
[1]=>16
[2]=>18cm
)
2、使用 array_merge 方法
該方法如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引。所以只能適用於數字索引。
[php]view plain
<?php
$arr=array(
1=>'apple',
3=>'banana',
5=>'orange'
);
print_r(array_merge($arr));
$arr1=array(
'name'=>'jerry',
'age'=>16,
'height'=>'18cm'
);
print_r(array_merge($arr1));
輸出結果:
[php]view plain
[root@localhostphp]#phparray.php
Array
(
[0]=>apple
[1]=>banana
[2]=>orange
)
Array
(
[name]=>jerry
[age]=>16
[height]=>18cm
)
3、循環遍歷
最原始的方式,臃腫且不夠優雅,極力抵制。
[php]view plain
<?php
functionresetArr($arr){
$temp=array();
foreach($arras$v){
$temp[]=$v;
}
return$temp;
}
$arr=array(
1=>'apple',
3=>'banana',
5=>'orange'
);
print_r(resetArr($arr));
$arr1=array(
'name'=>'jerry',
'age'=>16,
'height'=>'18cm'
);
print_r(resetArr($arr1));
That『s it!
B. php依次生成數字 1到10,每次生成一個數字,不重復 不循環,謝謝
你試著寫一個數組,裡面是1-10。$array=array(1,2,3,4);
然後shuffle($array);
再遍歷輸出出來就可以了
C. PHP 輸出一個數組中一個數值連續出現的次數(或者只輸出連續出現的最大值)
$numberArray=array(0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1);
$str=implode('',$numberArray);
$Tokens=explode('1',$str);
$maxCount=0;
foreach($Tokensas$oneToken){
if($oneToken=='')
continue;
$length=strlen($oneToken);
if($length>$maxCount)
$maxCount=$length;
}
echo$maxCount;
這個方法只是針對你給的數據進行運算的 如果真實數據格式與此數據格式差異較大就不好使了
D. PHP分行連續截取字元串如何判斷數字
可以用正則表達式,例如:
<?php $str="我最愛看的《西遊記》101頁"; if (preg_match('/《(.*?)》/',$str,$reg)) echo '書名:'.$reg[1]; if (preg_match('/》(\d+)/',$str,$reg)) echo '頁碼:'.$reg[1];?>
E. php判斷該字元串是否含有連續的數字
用自定義函數處理 效率應該不高
函數體(字元串){
從第一位開始遍歷 如果是數字就開始 驗證過程
如果不是就下一個直到數字
驗證過程(判斷獲得的數字){這個數字6次累加 結果作為字元串拼接 返回這個拼接結果}
看看這個拼接結果是否存在於初始字元串
(至於返回值怎麼定就自己看吧)
}
這個函數不能處理大數哦 因為 12,13,14,15 這種數據收到進位影響 如果是10以上 可以考慮先轉換進制再處理
F. php依次生成數字,每次一個數字,范圍1-10,不循環
function NoRand($begin=1,$end=10,$limit=10){
$rand_array=range($begin,$end);
shuffle($rand_array);//調用現成的數組隨機排列函數
return array_slice($rand_array,0,$limit);//截取前$limit個
}
print_r(NoRand());
G. php 怎麼用正則表達式從一段內容里提取出一段連續的10位數字
如果是連續的隨機數
preg_match("/\d+/i",$str,$match);
$matches[0] 就是
如果是非連續的
$str = preg_replace("/\D/", 「」, $str);
$str 就是
H. php按順序生成數字,每次一個數字,范圍1-100,循環生成
使用循環生成,假如你想生成512個數字,就可以像這樣:
$num=1;//初始化一個變數為1
for($i=1;$i<=512;$i++)//這個是看你要生成多少個數字,然後循環生成
{
if($num>=100)
$num=1;//若變數的數字大於一百,則返回變成1
echo$num."</br>";//輸出變數數字,即生成的數字,後面的</br>是換行
$num++;//然後將變數加1,即在前面生成的數字基礎上加一
}
I. PHP中要生成5們隨機數,如果生成的數字有三位數字連續是一樣的,比如53332,3個3了,就重生成,怎麼寫呢
function getRand()
{
$res = "";
for ($i = 0; $i < 5; $i++)
{
$res .= rand(0, 9);
}//此循環使隨機數的第一位也可為零
for ($i = 0; $i < 3; $i++)
{
if ($res[$i] == $res[$i + 1] && $res[$i] == $res[$i + 2])
return getRand();
}//因為只有5位數字,如果要看是否有三位連續,只需要從頭檢查到第三位,檢查每一位的時候看之後的兩位是否與第一位相同
return $res;
}
這樣的話 效率最高 並且保留了第一位可為零的可能
J. PHP頁面代碼數字遞增
這個按鈕需要為表單...
<?php
if($_GET[『block』])
{
echo 『』;
}
這里的echo輸出JavaScript控制,用for循環