2015-02-10 49 views
0

如何在我的情况下跳过插入重复相同的数组项数值?我知道有像数组一样的函数,但我的情况是不同的。循环并插入到没有冗余的另一个阵列

下面的代码产生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

我相信你在不久之前也提过类似的问题。 – Daan 2015-02-10 15:31:20

+0

'$ SecondArray [$ num] ='... – 2015-02-10 15:31:35

+1

你的情况有什么不同?你为什么不能使用'array_unique'? – 2015-02-10 15:36:40

回答

0

创建一个新的数组,然后l请输入$NumArray以检查值是否已经存在...如果不存在,请将其添加到新阵列。

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

$newArray = array(); 
foreach($NumArray as $val) { 
    if(!in_array($val, $newArray)) { 
     $newArray[] = $val; 
    } 
} 
echo '<pre>'; 
print_r($newArray); 
echo '</pre>'; 
?> 
+0

所以这里的关键是in_array? – Fernandez 2015-02-11 02:45:25

+0

是的,它检查值是否已经在数组中。如果没有,则添加。 – LinkinTED 2015-02-11 19:12:05

1

如果$NumArray是静态的,这是因为这样做非常简单:

foreach (array_unique($NumArray) as $num) 
{ 
    //same code as before 
} 

但考虑到它是不是,你可以这样写:

$SecondArray =(); 
foreach ($NumArray as $num) 
{ 
    if (!isset($SecondArray[$num])) 
    {//key does not exist (yet) 
     $SecondArray[$num] = array('alpa' => $num); 
    } 
} 
echo json_encode(array_values($SecondArray));//remove keys, to ensure a JSON array 

see the docs

调用array_values可确保生成的JSON字符串是一个JS数组,而不是 一个东西。例如,如果$num1, 2, 3,JSON字符串没有array_values会一直是这样的:

{ 
1: {alpha: 1}, 
2: {alpha: 2}, 
3: {alpha: 3} 
} 

随着调用,它看起来是这样的:

[ 
{alpha: 1}, 
{alpha: 2}, 
{alpha: 3} 
] 
+0

如果$ num不仅仅是数字,而且真正的值就像人的名称? – Fernandez 2015-02-11 02:44:31

+0

@Fernandez:这并不重要,字符串和数字一样可以用作键,因为PHP数组实际上是一个哈希表(有点像其他语言的字典) – 2015-02-11 07:32:07

0

什么:

$NumArray = array('1','2','3','4','5','5','5','5','5','5','5','6','6','7'); 
$SecondArray = array(); 
foreach($NumArray as $key => $value){ 
    if(in_array($value, $NumArray){ 
     array_push($SecondArray, $value); 
    } 
} 
echo json_encode($SecondArray); 
+0

OP提到他不能使用'array_unique '出于某种原因(问题的第二句) – 2015-02-10 15:40:58

+0

警告:array_push()预计参数1是阵列,线路空给出
Fernandez 2015-02-10 15:50:50

+0

@Fernandez遗憾错过'$ SecondArray =阵列();' – mgamon 2015-02-10 15:51:43