在循环中跳过数组插入

问题描述:

如果在最后一个值等于新来的值时如何跳过插入数组?下面的代码产生12345555555667,但我只想要1234567,意思是不是一个值是重复的。在循环中跳过数组插入

$NumArray = array('1','2','3','4','5','5','5','5','5','5','5','6','6','7'); 
$SecondArray = array(); 

foreach($NumArray as $num){ 
    $SecondArray[] = array(
    'alpa'=>$num 
    ); 
} 

echo json_encode($SecondArray); 
+0

“if last value is equal to new coming value” – 2015-02-10 14:35:30

+0

http://php.net/end'if(end($ arr)!= $ new_value){$ arr [] = $ new_value}' – 2015-02-10 14:36:33

+2

[array_unique ](http://php.net/manual/en/function.array-unique.php)? – jurgemaister 2015-02-10 14:37:01

if (end($NumArray) != $someNewValue){ 
    $NumArray = $someNewValue; 
} 
+0

按上一个值,它们的意思是循环的最后一个值,而不是数组中的最后一个值。 – jd182 2015-02-10 14:37:27

+0

为真。我不明白问题。 – 2015-02-10 14:38:16

$NumArray = array(); 

$numArray = array('1','2','3','4','5','5','5','5','5','5','5','6','6','7'); 

foreach($NumArray as $num){ 
    if ($previousNumber != $num) { 
     echo $num; 
     $previousNumber = $num; 
    } 
} 
+0

我会劝阻使用'继续'强硬,只是颠倒'if'语句中的条件。 – 2015-02-10 14:39:14

+1

$ NumArray = array('1','2','1' – 2015-02-10 14:39:31

+0

@ b.enoit.be:为什么你会不鼓励使用'continue'? – 2015-02-10 14:41:47

使用array_unique()

$NumArray = array(); 

$NumArray =array('1','2','3','4','5','5','5','5','5','5','5','6','6','7'); 
$NumArray = array_unique($NumArray) ; 
foreach($NumArray as $num){ 
echo $num; 
} 
+0

为什么要下投票? – Shin 2015-02-10 14:59:28

您可以使用array_unique得到一个数组的独特价值,然后对它们进行迭代。

$NumArray = array('1','2','3','4','5','5','5','5','5','5','5','6','6','7'); 

$unique_arr = array_unique($NumArray) ; 

foreach($UniqueArray as $num){ 
    echo $num; 
} 
+0

或只需要echo'implode(“”,array_unique($ NumArray));' – jurgemaister 2015-02-10 14:39:10

+0

请注意,如果数组未被排序,这种方式将失败。 – 2015-02-10 14:39:12

+0

即使未排序,它也不会失败,PHP选择数组中所有元素的唯一值 – Qurashi 2015-02-10 14:43:35

简单:

$NumArray = array('1','2','3','4','5','5','5','5','5','5','5','6','6','7'); 
$NumArray = array_unique($NumArray); 

连:

$NumArray = array_unique(array('1','2','3','4','5','5','5','5','5','5','5','6','6','7')); 

这将确保当你第一次填充阵列唯一独特的元素被添加。编辑:

if (!in_array($someNewValue, $NumArray)) 
{ 
    $NumArray[] = $someNewValue; 
} 

使用array_unique()

$numArray = array('1','2','3','4','5','5','5','5','5','5','5','6','6','7'); 
echo json_encode(array_unique($numArray)); 
+0

有人可能想解释为什么downvote? – Robert 2015-02-10 14:51:30

试试这个:

for ($i = 0; $i <count($NumArray); $i++) 
{ 
    for ($k = $i+1; $k <count($NumArray); $k++) 
    { 
    if ($k != $i && $NumArray[$i] == $NumArray[$k]) 
     { 
     $NumArray[$k]=""; 
     } 
    } 
} 

现在阵列 'NumArray' 只包含原子值。

+1

这是根本不可读的 – 2015-02-12 03:25:57