如果不存在,则在数组中插入变量

时间:2014-05-23 13:19:15

标签: php arrays

我想在数组中插入变量。我正在使用in_array()函数检查是否已插入值,并array_push将元素追加到数组中。

工作示例

<?php 
$var1="cat";
$var2="dog";
$var3="gepp";
$var4="frigor";
$var5="dog";
$var6='cat';

$array1=array($var1,$var2,$var3,$var4,$var5,$var6);

$ya=array();

for($i=0;$i<=count($ya);$i++)
{
 if (in_array($array1[$i],$ya,true))
 {          
    echo $i . " : Yess<br>";
 }
 else
 { 
    array_push($ya, $array1[$i]);
    echo $i . " : Noo<br>";
 }
}

echo "<br>\n";
print_r($array1);
echo "<br>\n";
print_r($ya);
?>

输出结果为:

  

0:Noo   1:Noo   2:Noo   3:Noo   4:Yess

     

数组([0] =&gt; cat [1] =&gt; dog [2] =&gt; gepp [3] =&gt; frigor [4] =&gt; dog [5] =&gt; cat)
  数组([0] =&gt; cat [1] =&gt; dog [2] =&gt; gepp [3] =&gt; frigor)

不工作示例

在以下代码中,值是从xml的label标签中保存的。

$array = array();
foreach($mypix->result as $pixinfo):
    echo " Result<br>\n   ";
    foreach($pixinfo->row as $row): 
        $label=$row->label;         
        if (in_array($label,$array,true))
        {           
            echo "Yess<br>";
        }
        else
        { 
            array_push($array, $label);
            echo "No<br>";
        }
        echo "[NEXT]<br>\n";
    endforeach;
endforeach;

xml的结构如下:

<result date="2014-05-05"> 
  <row> 
    <label>1.1</label> 
    <nb_visits>4</nb_visits> 
  </row> 
</result> 
<result date="2014-05-06"/> 
<result date="2014-05-08"> 
  <row> 
    <label>Custom Variable value not defined</label> 
    <nb_visits>115</nb_visits> 
    <nb_actions>261</nb_actions> 
  </row> 
  <row> 
    <label>Commedia</label> 
    <nb_visits>26</nb_visits>
    <nb_actions>39</nb_actions> 
  </row> 
[...]
</result>

问题是即使数值已存在于数组中,也会插入值。 你们有什么建议吗? in_array命令有什么问题?

修改

以下是var_dump($array);

的输出
array(441){
[0]=> object(SimpleXMLElement)#9 (1) { [0]=> string(3) "1.1" } 
[1]=> object(SimpleXMLElement)#8 (1) { [0]=> string(3) "1.2" } 
[2]=> object(SimpleXMLElement)#10 (1) { [0]=> string(3) "1.1" } 
[3]=> object(SimpleXMLElement)#11 (1) { [0]=> string(3) "1.1" } 
[4]=> object(SimpleXMLElement)#12 (1) { [0]=> string(33) "Custom Variable value not defined" }

1 个答案:

答案 0 :(得分:1)

使用array_unique来削减重新获取变量或使用array_diff来查找2个数组之间的差异