使用php检索数组中的最后一个值
问题描述:
我有一个数组名arrayname
并在下面的图像中有一些值。使用php检索数组中的最后一个值
我怎样才能在阵列arrayname
即使在arrayname1[7]
为空值的最后一个值。这应该忽略空值并给出最终答案。
答
筛选出空值,取最后一个值:
$array = array_filter($arrayname1);
$lastValue = end($array);
答
有没有办法找到你需要的空值,但还有另一种方法来创建另一个数组并找到最终值。
下面是一个示例实施例
<?php
$fruits = array('apple', 'banana', 'cranberry','', 'fadsf', '', '');
echo "Count : " . count($fruits);
$k = count($fruits) - 1;
foreach($fruits as $pos => $v1) {
if($v1 != "") {
echo "$v1 <br>";
$newarray1[] = $v1;
}
}
echo "<br>Last : " . end($newarray1);
?>
+1
为什么重新创建'array_filter'? – deceze 2011-12-27 06:45:05
答
使用
“isset()函数”,以查看是否有元件是 “空”。
使用“count()”来确定数组的长度。
答
基准:
我重做我自己的服务器上的标杆,因为键盘是由它给零星结果是零星的服务器负载,它使用的是旧版本的PHP。
结果:
(Target: 100003)
Last Value: 100003
array_filter took 8.4615960121155 seconds
Last Value: 100003
array_flip took 20.312706947327 seconds
Last Value: 100003
array_pop took 6.7329788208008 seconds
基准脚本是:
$array=array();
for($run=0; $run<100000; $run++)
{
$rand=rand(0,4);
if ($rand===0) $array[]=''; else $array[]=(string)$rand+$run;
}
$save=$array;
echo '(Target: '.end($array).")\n";
$time=microtime(true);
for($run=0; $run<1000; $run++)
{
$array=$save;
$array = array_filter($array);
$lastValue = end($array);
}
$time=microtime(true)-$time;
echo "Last Value: $lastValue\n";
echo "array_filter took $time seconds\n";
unset($array_2);
$time=microtime(true);
for($run=0; $run<1000; $run++)
{
$array=$save;
$array = array_flip($array);
unset($array['']);
$lastValue = array_pop(array_flip($array));
}
$time=microtime(true)-$time;
echo "Last Value: $lastValue\n";
echo "array_flip took $time seconds\n";
unset($array_2);
$time=microtime(true);
for($run=0; $run<1000; $run++)
{
$array=$save;
$lastValue = array_pop($array);
while($lastValue==='')
{
$lastValue = array_pop($array);
}
}
$time=microtime(true)-$time;
echo "Last Value: $lastValue\n";
echo "array_pop took $time seconds\n";
获奖者是:
function array_last_noempty($array)
{
$lastValue = array_pop($array);
while($lastValue==='')
{
$lastValue = array_pop($array);
}
return $lastValue;
}
答
您可以用功能这种操作还有:
<?php
function getLastElement($data=array())
{
for($i=0; $i<count($data); $i++)
{
if($i==count($data)-1)
{
$end = $data[$i];
}
}
return $end;
}
?>
这是最好的和短代码。 – Rafee 2011-12-27 06:47:15