PHP从数组中删除第一个值

时间:2016-09-06 06:17:24

标签: php arrays

我试图从数组中删除第一个值,如果第一个值(第一个字符和最后一个字符)匹配'ae'。完成比较后,程序将提示用户数组为空。

但是当数组离开2时,程序将停止删除第一个值。


代码:

<?php
$activepath = array('a,s,d,e','a,n,m,e','a,k,g,e','a,q,w,e'); 
$path = null;
for($x = 0 ; $x < count($activepath); $x++)
{
$path = explode(",", $activepath[$x]);
if($path[0].end($path) === "ae")
{
array_shift($activepath);
}
var_dump($activepath);
}
?>


结果:

C:\wamp64\www\asd\test.php:18:
array (size=3)
0 => string 'a,n,m,e' (length=7)
1 => string 'a,k,g,e' (length=7)
2 => string 'a,q,w,e' (length=7)

C:\wamp64\www\asd\test.php:18:
array (size=2)
0 => string 'a,k,g,e' (length=7)
1 => string 'a,q,w,e' (length=7)

3 个答案:

答案 0 :(得分:0)

你要将第一个元素移出数组,也要增加你用来查看数组的索引。而不是for循环,使用一段时间继续检查,直到设置一个标志,当你发现数组的第一个元素符合你的条件时,将flash设置为true。

答案 1 :(得分:0)

当你正在移动并同时增加数组时,你所做的事情永远不会奏效。 做这样的事情来检查:

<?php

$activepath = array('a,s,d,e', 'a,n,m,e', 'a,k,g,e', 'a,q,w,e');
$path = null;
$newarray = array();
for ($x = 0; $x < count($activepath); $x++) {
    $path = explode(",", $activepath[$x]);
    if ($path[0] . end($path) === "ae") {
        array_push($newarray, $activepath[$x]);
    }
    var_dump($activepath);
}
if(count($newarray) == count($activepath))
    echo "All the element have 'ae'";

?>

答案 2 :(得分:0)

谢谢J Earls的提示。我设法用你的提示来解决它。

<?php
$activepath = array('a,s,d,e','a,n,m,e','a,k,g,e','a,q,w,e');
$path = null;
$x = 0;

while ($activepath != null)
{

$path = explode(",", $activepath[$x]);

if($path[0].end($path) === "ae")
{
array_shift($activepath); 
}

if($activepath == null)
{
echo 'active-path is empty';
}

var_dump($activepath);

if($activepath == null)
{
break;
}

}   
?>