我试图从数组中删除第一个值,如果第一个值(第一个字符和最后一个字符)匹配'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)
答案 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;
}
}
?>