这是我的第一篇文章,所以请放纵/宽容。
此阵列是刺绣程序的步骤枚举
我必须在非空步骤之间保持“0”值,并且在
之后不要取空值$oldArray = Array
("1278","1297","1278","1000","0","1000","1212","1001","1212","1278","1000",
"0","1297","1001","1000","0","1001","1278","1000","1001","1001","1278",
"0","1000","1001","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0"
);
我第一次反转它并找到第一个非空值:
$arrayReversed = array_reverse($oldArray);
$lastKey = 48;
foreach ($arrayReversed as $key => $value) {
# If the value is not empty
if (!empty($value)) {
[FR] - > remplir un nouveau tableau avec les valeurs en partant de l'index“$ key”jusqu'a“$ lastKey”
[ENG] - >填充一个新数组,其值从第一个键开始,非空值到最后一个键 编辑:这是我的错误
$sequencesFromEnd[] = array_slice($arrayReversed,$key,$lastKey);
我已使用此代码更正:
$sequencesFromEnd = array_slice($arrayReversed,$key,$lastKey);
break;
}
$key++;
}
编辑:然后它就像我预期的那样工作!
然后我想再次反向“数值为的数组,以便按正确的顺序执行步骤,且此代码无效:
//First try
$stepsInRightOrder = array_reverse($sequencesFromEnd);
// Second try
//array_reverse($stepsInRightOrder);
第二次尝试评论,因为它是一个无操作。
不幸的是,数组在“foreach”循环中保持实现 ...
非常感谢提前!!
答案 0 :(得分:0)
你实际上并没有倒转阵列。第一个array_reverse将数组反转为
0-> 1278
1-> 1297
2-> 1278
3-> 1000 etc...
在第一个array_reverse $ arrayReverse包含
之后etc...
0-> 1000
1-> 1278
2-> 1297
3-> 1278
请注意,只有数组中的值被反转,因为您没有明确保留键。然后你经历一个foreach循环,如果值不为空,你将一个新的数组,从当前键到key + 48元素放入一个新数组,这意味着你实际上有一个数组在一个数组中,然后打破离开foreach循环,所以数组将只包含一个数组,然后你反转,但由于它只包含一个数组,它反向相同:
0-> etc...
0-> 1000
1-> 1278
2-> 1297
3-> 1278
你只能反转外部数组,它包含1个元素。
(有点不清楚......所以$ sequencesFromEnd []实际上将一个数组添加到一个新数组中。你可能只想使用$ sequencesFromEnd = array_slice(...)或array_reverse($ sequencesFromEnd [$ some_key ]))
答案 1 :(得分:0)
如果要删除尾随零
// Find the last not zero value
$lastkey = count($oldArray)-1;
while($lastkey and ! $oldArray[$lastkey ]) --$lastkey;
// Slice array
$stepsInRightOrder = array_slice($oldArray, 0, $lastkey+1);
print_r($stepsInRightOrder);