我想在数组中插入变量。我正在使用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" }
答案 0 :(得分:1)
使用array_unique来削减重新获取变量或使用array_diff来查找2个数组之间的差异