【问题标题】:php array_push and array_intersectphp array_push 和 array_intersect
【发布时间】:2017-04-21 00:04:44
【问题描述】:

我想为数组添加值,然后我想在数组相交中使用这些数组。代码在下面。我在哪里做错了?

$array =['1,2,3,4','3,4,5','2,3'];

$arr2 = [];
$common = [];

for($i=0; $i<count($array); $i++)
{
    $arr1 = [];
    if($i==0)
    {
        array_push($arr1, $array[$i]);
        array_push($arr2, $array[$i]);
        $common = array_intersect($arr1,$arr2);
    }
    else
    {
        array_push($arr1, $array[$i]);
        $common = array_intersect($arr1,$common);
    }

    print_r($common);
}

输出是

Array ( 
    [0] => 1,2,3,4 
) 
Array ( ) 
Array ( ) 

我想成为这样的人:

Array ( 
    [0] => 1,2,3,4 
) 
Array(
    [0] => 3,4
)
Array(
    [0] => 3
)

谢谢,

【问题讨论】:

  • 您能否更深入地了解您想要实现的目标,而不仅仅是您想要使用的功能。例如 - “我想要这个和这个数组之间的区别”。
  • 你想因此比较每一对吗?
  • $array 总是可变的。当向 $array 添加一个值时,我想将最后一个值与其他值区分开来。
  • 与其他人的最后一个值的差异 - 差异不是交集。你能详细说明你的问题吗?

标签: php array-push array-intersect


【解决方案1】:

试试这个

<?php 

$array =['1,2,3,4','3,4,5','2,3'];
$arr1 = [];

for($i=0; $i<count($array); $i++)
{   
    $j='arr'.$i;
    $j= [];
    if($i==0){
    array_push($j, $array[$i]);
    }   
    else{
        $a = explode(',',$array[$i-1]);
        $b = explode(',',$array[$i]);
        $c = array_intersect($a,$b);
        $d= implode(',',$c);
        array_push($j, $d);
    }
    echo "<pre>"; print_r($j);

}

【讨论】:

  • 就是这样!谢谢
【解决方案2】:

您误用了array_intersect。此方法确实适用于数组中的值而不是单个值。
以你想要的方式使用它 你应该用逗号分割你的值并将它们作为单独的值插入。例如: 值:'1,2,3,4' 应插入为:

$array = ['1', '2', '3', '4']; 

解决方案(无循环等):

<?php
$array =['1,2,3,4','3,4,5','2,3'];

$arr1 = array(); 
$arr2 = array();
$common = array();

$arr1 = explode(',', $array[0]); 
$arr2 = explode(',', $array[1]);

$common =array_intersect($arr1, $arr2);
print_r($common);

$arr3 = explode(',', $array[2]); 
$common2 = array_intersect($common, $arr3);
print_r($common2);

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多