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循环